Как установить собственный пакет Python, который будет использоваться в качестве системы команд после PEP-668?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как установить собственный пакет Python, который будет использоваться в качестве системы команд после PEP-668?

Сообщение Anonymous »

У меня есть утилита, написанная на Python, которую я использовал и хочу использовать ее снова.
Это сделано в виде пакета, который я устанавливаю, и исполняемого сценария с shebang, который будет импортирован. и вызывается основная функция.
Используется так же, как и любая другая утилита, как и в других языках. Просто вызовите исполняемый файл, который оборачивает основной вызов модуля.
Но после обновления Ubuntu с 22.04 по 24.04, когда я пытаюсь установить пакеты для всей системы с помощью pip, я получаю следующее сообщение: по PEP-668:

Код: Выделить всё

$ /usr/bin/python3 -m pip install -U --user -e ./
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.

If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.

If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.

See /usr/share/doc/python3.12/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Мне удалось установить зависимости, используя эквиваленты пакета APT (python-xyz), но для установки моего собственного пакета это не работает.
Я не привык к venvs, но перед их использованием требуются дополнительные действия, такие как активация среды и т. д., которые я не могу согласовать с общесистемным доступным сценарием. Я могу выбрать двоичный файл Python для запуска сценария в shebang, но это все, что я думаю, что могу сделать.
Итак, после PEP-668, как создать приложение для запуска системы- широкий, который можно вызвать из оболочки или .desktop Запись приложения XDG без написания локального пакета Debian (или любой другой ОС)?
Рассматриваемое приложение открыто источник, его можно найти здесь: https://github.com/AllanDaemon/uchoose
Использование pip с --break-system-packages, как указано выше, наряду с другими хаками , у меня сработало. Но это кажется слишком хакерским. Возможно, это идеальное решение для такого рода случаев, но у меня такое ощущение, что оно не идеальное.

Код: Выделить всё

/usr/bin/python3 -m pip install --break-system-packages -U --user ./


Подробнее здесь: https://stackoverflow.com/questions/789 ... er-pep-668
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»