Често срещам някои пакети на python (които инсталирах с помощта на pip), които могат да бъдат достъпни като самостоятелен двоичен файл на терминал. Не само Python модул.
Искам да знам стандартния начин за създаване на пакет, който може да бъде инсталиран от $pip install mypackage
(или от $python setup.py install
) и също така е достъпен като $mypackage
отвсякъде. Знам, че имам достъп до файла __main__.py от $python -m mypackage
. Но искам моят пакет да функционира точно като всеки двоичен файл, съхранен в /usr/bin.
Не търся хакване на променлива на псевдоним/път и не искам да създавам .deb/.rpm неща.
РЕДАКТИРАНЕ: Получих помощ от полето за коментари. В крайна сметка, setuptools вече има опцията. Документация на Setuptools
параметърът entry_point на функцията setup() върши работа.
setup(
# other arguments here...
entry_points={
'console_scripts': [
'foo = my_package.some_module:main_func',
'bar = other_module:some_func',
],
'gui_scripts': [
'baz = my_package_gui:start_func',
]
}
Тук entry_point
взема речник, чиято стойност съдържа списък. Създават се два CLI скрипта с имена foo
и bar
, които съдържат функция main_func
и some_func
съответно от my_package.some_module
и other_module
. GUI скриптове също могат да бъдат създадени чрез този метод.
/usr/local/lib/
, което не трябва да пречи на apt инсталираните пакети, но ако системен пакет внезапно открие по-нова, несъвместима версия на зависимост, той може да се счупи. Използването на venv е за предпочитане. - person mata   schedule 19.12.2017