Как установить пакет Python для всей системы в Linux?

Я часто сталкиваюсь с некоторыми пакетами Python (которые я установил с помощью pip), к которым можно получить доступ как к отдельному двоичному файлу в Terminal. Не просто модуль Python.

Я хочу знать стандартный способ создания пакета, который может быть установлен $pip install mypackage (или $python setup.py install), а также доступен как $mypackage из любого места. Я знаю, что могу получить доступ к файлу __main__.py с помощью $python -m mypackage . Но я хочу, чтобы мой пакет функционировал так же, как любой двоичный файл, хранящийся в /usr/bin.

Я не ищу какой-либо взлом переменной псевдонима/пути и не хочу создавать файлы .deb/.rpm.

РЕДАКТИРОВАТЬ: я получил помощь от commentbox . В конце концов, в 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. Скрипты графического интерфейса также могут быть созданы с помощью этого метода.


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 есть такая возможность. @дикий вильгельм   -  person Tonmoy Ahmed Dhroubo    schedule 18.12.2017
comment
даже если вы получите помощь в комментариях, вы действительно должны правильно ответить на вопрос, поскольку другие люди могут наткнуться на тот же вопрос, и есть вероятность, что они на самом деле не понимают, что говорит руководство. достаточно выполнить несколько шагов. большое спасибо.   -  person stucash    schedule 18.12.2017
comment
Просто имейте в виду, что установка пакетов для системного интерпретатора Python с помощью pip может привести к проблемам, особенно когда pip пытается обновить пакет, который также установлен диспетчером пакетов (apt), а для существующих пакетов требуется более старая версия. pip устанавливает пакеты в /usr/local/lib/, что не должно мешать правильно установленным пакетам, но если системный пакет внезапно находит более новую, несовместимую версию зависимости, он может сломаться. Использование venv предпочтительнее.   -  person mata    schedule 19.12.2017