Я использую setuptools
для упаковки Python, где я определяю точки входа консольного скрипта обычным способом в файле setup.py:
setup.py
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
setup(...
name='my_project',
entry_points={'console_scripts':['my_entry_name=my_package.scripts.my_python_script:main'
]},
...
)
После установки пакета я могу вызвать эту точку входа из командного файла следующим образом:
my_CURRENT_batch_file.command
#!/bin/bash
cd "$(dirname "$0")" # set the working directory as the command file locations
~/anaconda3/envs/my_env_name/bin/entry_point_name <my script args>
Пока это работает,использование виртуальной среды заставляет меня включать всю информацию о пути перед вызовом точки входа, что, на мой взгляд, действительно разрушает простоту, которую точка входа должна предоставить потребителю сценария. Есть ли способ заставить setuptools
зарегистрировать точку входа в масштабе всей системы, чтобы я мог вызывать точку входа без пути, подобного этому?:
my_DESIRED_batch_file.command
#!/bin/bash
cd "$(dirname "$0")" # set the working directory as the command file locations
entry_point_name <my script args>
Без этого усложнения, вносимого виртуальными средами, точка входа консольного сценария позволяет потребителю сценария использовать сценарий без необходимости знать, где установлен сценарий или даже на каком языке он написан. Я хотел бы сохранитьэта простота даже при упаковке в виртуальных средах.
То, что я пробовал - я нашел фактический файл точки входа в виртуальной среде после установки пакета:
/anaconda3/envs/my_env/bin/my_entry_name
и поместил копию этого файла в путь основного лотка:
/anaconda3/bin/my_entry_name
и обнаружил, что я могу затем вызвать точку входа без пути,по желанию, однако это ручной шаг, который я не хочу делать потребителями скрипта. Есть ли способ получить setuptools
, чтобы поместить файл точки входа в общий путь к корзине, а не к корзине среды или каким-либо другим автоматическим средствам для этого?
Моя настройка
- ОС: macOS Catalina
- Оболочка: bash (да, я изменил ее обратно после обновления Catalina и подавил раздражающее сообщение «zsh is now default»)
- IDE:PyCharm 19.1 Pro
- Анаконда: 4.4.7 (примечание: был перенесен из корня в User / my_user / обновлением Catalina)
- Python: 3.7
- Тип виртуального env: conda