Как да инсталирате Python пакет за цялата система на Linux?

Често срещам някои пакети на 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 скриптове също могат да бъдат създадени чрез този метод.


person Tonmoy Ahmed Dhroubo    schedule 18.12.2017    source източник
comment
Искате да кажете, че се опитвате да изложите скриптове от собствения си пакет? След това ги конфигурирайте в setup.py.   -  person jonrsharpe    schedule 18.12.2017
comment
setuptools.readthedocs.io/en/latest/   -  person wildwilhelm    schedule 18.12.2017
comment
Да, точно това търсих. Благодаря . Нямах представа, че setuptools има тази опция. @wildwilhelm   -  person Tonmoy Ahmed Dhroubo    schedule 18.12.2017
comment
дори ако получите помощ в коментара, трябва наистина да отговорите правилно на въпроса, тъй като други хора може да се натъкнат на същия въпрос и има шанс да не следват наистина какво казва ръководството. няколко стъпки, които трябва да следвате, биха били достатъчни. Благодаря много.   -  person stucash    schedule 18.12.2017
comment
Само имайте предвид, че инсталирането на пакети за системния интерпретатор на Python с помощта на pip може да доведе до проблеми, особено когато pip се опитва да актуализира пакет, който също е инсталиран от мениджъра на пакети (apt), а съществуващите пакети изискват по-старата версия. pip инсталира пакети към /usr/local/lib/, което не трябва да пречи на apt инсталираните пакети, но ако системен пакет внезапно открие по-нова, несъвместима версия на зависимост, той може да се счупи. Използването на venv е за предпочитане.   -  person mata    schedule 19.12.2017