Я разработчик приложения Python GUI. Я хотел бы, чтобы пользователи моего приложения могли устанавливать его с помощью pip, поскольку не все его зависимости еще вошли в Debian, и я не ожидаю, что эта ситуация изменится в ближайшее время.
Конечно, PPA был бы хорошей идеей, но в моем случае это означало бы создание с нуля пакетов Debian для пакетов Python, которые мне не принадлежат, и включали бы вещи, в которых я определенно не разбираюсь, например SWIG.
Следующая лучшая альтернатива PPA — это pip от Python. И он отлично работает! Все лучшие советы говорят об использовании опции --user
при запуске pip install
. Разработчики pip говорят об этом, и у меня сложилось впечатление, что Ubuntu на самом деле использует это по умолчанию.
Однако в Ubuntu я наблюдаю две проблемы при --user
использовании pip
:
- Исполняемый файл приложения устанавливается в
~/.local/bin
, который не находится в пути по умолчанию в Ubuntu, в отличие от Fedora и, возможно, некоторых других дистрибутивов. (Setup.py использует setuptoolsentry_points
). - По какой-то необъяснимой причине, даже если
.desktop
файл находится в~/.local/share/applications
, приложение не отображается в Dash, даже после выхода из системы. К сожалению, страницы man, установленные в ,~/.local/share/man/man1
также не отображаются, когда пользователь запускает man из терминала.
Я могу попросить пользователей Ubuntu создать ~/bin
каталог и добавить символическую ссылку на мое приложение в ~/.local/bin
, но это не решит проблему страницы руководства или отсутствия способа запустить приложение из Dash.
Как я могу посоветовать своим пользователям наилучшее решение этих проблем?
Точная команда, которую я советую пользователям использовать для установки, этоpython3 -m pip install --user foo-1.0.tar.gz
решение1
После общения с разработчиками Ubuntu в IRC я теперь понимаю, что Ubuntu следует Debian и добавляет ~/bin в PATH, если папка существует. Планов сделать то же самое для ~/.local/bin нет. Поэтому конечный пользователь должен вручную изменить свой путь или добавить символическую ссылку и т. д. Как разработчик приложений, я полагаю, мне понадобится специальный скрипт установки для пользователей Ubuntu и Debian, который делает некоторые из этих вещей, что очень жаль, поскольку я уверен, что это касается каждого разработчика приложений Python, который тоже полагается на pip.