Как указать создание как (точечного) EXE, так и исполняемого файла без расширения в файле pyproject.toml в WindowsPython

Программы на Python
Anonymous
Как указать создание как (точечного) EXE, так и исполняемого файла без расширения в файле pyproject.toml в Windows

Сообщение Anonymous »

Проблема, с которой я столкнулся, специфична для Windows, но я думаю, что это хорошая возможность изучить систему сборки Python.
Итак, у меня есть проект, который я хочу установить в Windows. , машины Linux и Mac. Я использую setuptools как build-backend для создания утилиты для развертывания.
Я использую файл pyproject.toml для спецификаций сборки моего проекта. где я указываю project.scripts.
что-то вроде этого

Код: Выделить всё

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name=mypackage

....

[project.scripts]
myapp = "mypackage.mymodule:main"
При установке пакета с помощью pip я вижу, что файл myapp.exe создается в каталоге Scripts. Но из-за особенности восходящей зависимости мой исполняемый файл также ищет двоичный исполняемый файл myapp (вместо того, чтобы просто работать с myapp.exe)...Итак, теперь я ищу обходные пути, чтобы моя утилита не ломалась..
Один из обходных путей, который я придумал, заключался в использовании Shutils для копирования myapp.exe как myapp в каталоге Scripts сразу после запуска приложения. Таким образом, когда зависимость ищет myapp, она находит его, и все работает.
Сначала я пытался создать символическую/мягкую ссылку, но обнаружил, что для создания символической ссылки вам нужно права администратора в Windows. Итак, мне пришлось придумать этот дешевый способ копирования myapp.exe как myapp.
Мне этот обходной путь не нравится, потому что он загромождает мой приложение. Я бы хотел, чтобы мой код сборки и его особенности были отделены от кода приложения, если это возможно.
Итак, мне было интересно, смогу ли я заставить свою систему сборки создавать и myapp. exe и myapp, если целевая ОС — Windows7/10/11? Могу ли я сделать это ? Если да, то как?

Подробнее здесь: https://stackoverflow.com/questions/786 ... yproject-t

Вернуться в «Python»