Python - установите утилиту CLI с pip, чтобы ее можно было использовать не только в виртуальных средах

Предположим, что утилита CLI опубликована в PyPI, которую можно загрузить с pip,

Я хочу установить его для использования не в виртуальной среде. В виртуальной среде сценарий точки входа создается в env/bin/ каталог. Но, установив его с pip с деактивированной виртуальной средой, она просто устанавливается в /usr/local/lib/pythonX/dist-packages/<package-name>и без <package-name> сценарий точки входа в пути, поэтому он не вызывается.

Есть ли возможность сделать это?

2 ответа

Вы всегда можете экспортировать PYTHON_PATH в вашем .bash_[profile|rc] файл для управления тем, какой путь искать независимо от вашей виртуальной среды.

Согласно документации Python по PYTHON_PATH:

Путь поиска по умолчанию зависит от установки, но обычно начинается с префикса /lib/pythonversion (см. PYTHONHOME выше). Это всегда добавляется к PYTHONPATH.

Дополнительный каталог будет вставлен в путь поиска перед PYTHONPATH, как описано выше в разделе "Параметры интерфейса". Путь поиска можно манипулировать из программы Python как переменную sys.path.

источник: https://docs.python.org/2/using/cmdline.html

Спасибо @gnis и @anatoly-techtonik, но я решил сделать так, чтобы это делегировалось в setuptools вместо создания сценариев вручную.

Это просто вопрос передачи словаря setup, console_scripts, который может быть точно таким же, как entry_points (тот, который генерирует файл в виртуальной среде bin/:

setup(
    # rest of setup
    console_scripts={
        'console_scripts': [
            '<app> = <package>.<app>:main'
        ]
    },
)

Это сгенерирует скрипт в /usr/local/bin,

Для получения дополнительной информации проверьте https://packaging.python.org/distributing/

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