Упаковать setuptools CLI в исполняемый файл

У меня есть интерфейс командной строки Python3 (использующий Click) со следующим setup.py:

from setuptools import setup, find_packages

setup(
    # ...
    entry_points='''
        [console_scripts]
        importdb=scripts.importdb:cli
    ''',
)

Это работает, если я делаю pip install -e .: я могу просто запустить importdb ... из командной строки. Как я могу упаковать это в исполняемый файл, который можно запустить без pip install -e?

Я пробовал python setup.py bdist_egg, который создает файл яйца, но при попытке выполнить его выдает Syntax error: word unexpected (expecting ")"). Я не совсем уверен, куда идти дальше - я искал инструкции по этому поводу, но, похоже, ничего не работает.


person Bluefire    schedule 31.03.2020    source источник
comment
stackoverflow.com/search?q=%5Bpython%5D+standalone+executable   -  person phd    schedule 01.04.2020
comment
@phd Спасибо! Я видел этот вопрос, но он не совсем отвечает на мой. В этом вопросе говорится о запуске данного файла .py в качестве отдельного исполняемого файла. У меня есть пакет Python с точками входа, объявленными в setup.py, и я хочу, чтобы эти точки входа отображались через исполняемый файл.   -  person Bluefire    schedule 02.04.2020


Ответы (1)


Используйте 1_. Затем скопируйте получившийся скрипт /path/to/venv/bin/importdb куда хотите (может быть, куда-нибудь на свой PATH, например .local/bin/importdb). Пока venv остается в том же месте в файловой системе, он должен работать нормально, поскольку сценарий importdb имеет полный путь /path/to/venv/bin/python в качестве своего шебанг. В противном случае обратите внимание на такие вещи, как pex, shiv, zipapp.

person sinoroc    schedule 01.04.2020