Python setuptools — разъяснение по созданию приложения командной строки

Я создал простое приложение командной строки python3.7.1, используя click в виртуальной среде conda, которое отлично работает при работе в качестве модуля python -m.

Конечная цель:

Чтобы создать исполняемый файл с одной командой (двоичный), который можно отправить куда-нибудь в файловой системе, которая предпочтительно не зависит от виртуальной среды python/conda.

Обратите внимание, что этот вопрос, вероятно, тесно связан с моим полным непониманием setuptools (я прочитал документы).

Структура проекта:

python_clean_repo/
├── README.md
├── conda-environment.yaml
├── setup.py
├── tests
│   └── test_basic.py
└── yourpackage
    ├── configs
    │   ├── app_config.yaml
    │   └── config.py
    ├── main.py
    └── scripts
        └── cmdline.py

При запуске с опцией -m все работает как положено:

$ python -m yourpackage.scripts.cmdline
Hello World!
here i am in main
config is {'key': 'value'}

Упаковка выглядит успешно завершенной:

$ pip install -e .
...
Successfully installed python-clean-repo

Итак, теперь у меня есть исполняемый файл в моей виртуальной среде с именем yourscript (это имя точки входа, указанное в setup.py), который работает именно так, как я и ожидал:

$ yourscript
Hello World!
here i am in main
config is {'key': 'value'}

Вопрос в том:

Как мне «доставить» этот исполняемый файл, который теперь напрямую связан с моей виртуальной средой? Я тоже пробовал python setup.py sdist, но почему-то созданный tar.gz не содержит всего (нет включенных .py модулей, просто куча .txt файлов типа entry_points.txt и requires.txt

«Дубликат» предложения ссылается на pyinstaller, который, похоже, не устанавливается в мою среду conda (пробовал как с pip, так и с conda). Я до сих пор недостаточно хорошо разбираюсь в процессе сборки setup.py, чтобы полностью понять, действительно ли это то, что мне нужно для выполнения работы, и я просто не понимаю, как использовать как.

user9074332 21.02.2019 06:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
29
0

Другие вопросы по теме