Вопрос или проблема
Я хотел бы установить pipenv на Ubuntu 24.04, однако не могу. Ниже приведены команды, которые я пробовал. Как мне преодолеть эти препятствия? Ранее это было довольно просто в предыдущих версиях Ubuntu.
$ sudo apt install python3-pip
$ python3 -m pip install --user pipenv
ошибка: внешнее управление окружением
× Это окружение управляется внешне
╰─> Чтобы установить пакеты Python для всей системы, попробуйте apt install
python3-xyz, где xyz - это пакет, который вы пытаетесь
установить.
Если вы хотите установить пакет Python, не упакованный в Debian,
создайте виртуальное окружение, используя python3 -m venv путь/к/venv.
Затем используйте путь/к/venv/bin/python и путь/к/venv/bin/pip. Убедитесь, что вы установили python3-full.
Если вы хотите установить приложение Python, не упакованное в Debian,
проще использовать pipx install xyz, который будет управлять виртуальным окружением
за вас. Убедитесь, что pipx установлен.
См. /usr/share/doc/python3.12/README.venv для получения дополнительной информации.
заметка: Если вы полагаете, что это ошибка, обратитесь к вашему поставщику установки Python или ОС. Вы можете переопределить это, рискуя сломать вашу установку Python или ОС, передав --break-system-packages.
намек: См. PEP 668 для подробной спецификации.
$ sudo apt install pipx
Чтение списков пакетов... Готово
Формирование дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что вы
запросили невозможную ситуацию или если вы используете нестабильную
версию, что некоторые необходимые пакеты еще не были созданы
или были перемещены из Incoming.
Следующая информация может помочь решить ситуацию:
Следующие пакеты имеют неудовлетворенные зависимости:
python3-venv : Зависит от: python3 (= 3.12.3-0ubuntu1), но 3.12.3-0ubuntu2 должен быть установлен
E: Невозможно исправить проблемы, у вас удерживаемые сломанные пакеты.
$ sudo apt search pipx
Сортировка... Готово
Поиск полного текста... Готово
pipx/noble 1.4.3-1 all
запуск бинарных файлов из пакетов Python в изолированных окружениях
Обновление:
Согласно /usr/share/doc/python3.12/README.venv
, рекомендуется позволить менеджерам пакетов Debian управлять пакетами Python в /usr/lib/
и /usr/share/
. Следовательно, приложения Python и библиотечные модули, которые пользователь хочет установить, должны устанавливаться в виртуальном окружении, чтобы не конфликтовать с пакетами Python, которые уже установлены системой/распределением/ОС.
В этом случае, чтобы установить pipenv
, я не должен делать:
$ pip install --user pipenv
но я должен сделать:
$ mkdir -p ~/.venvs
$ python3 -m venv ~/.venvs/pipenv
$ ~/.venvs/pipenv/bin/python -m pip install pipenv
Чтобы запустить pipenv
в терминале, мне нужно ввести длинную команду:
$ ~/.venvs/pipenv/bin/pipenv [OPTIONS] COMMAND [ARGS]...
или я могу просто ввести pipenv
после создания символической ссылки на ~/.venvs/pipenv/bin/pipenv
в ~/.local/bin
:
$ ls -la ~/.local/bin
total 2952
drwxrwxr-x 1 user user 4096 Dec 8 04:35 .
drwx------ 4 user user 4096 Dec 8 04:35 ..
$ ln -s ~/.venvs/pipenv/bin/pipenv ~/.local/bin
$ ls -la ~/.local/bin
total 2952
drwxrwxr-x 1 user user 4096 Dec 9 00:44 .
drwx------ 4 user user 4096 Dec 8 04:35 ..
lrwxrwxrwx 1 user user 37 Dec 9 00:44 pipenv -> /home/user/.venvs/pipenv/bin/pipenv
$ pipenv [OPTIONS] COMMAND [ARGS]...
Запуск pipenv
из виртуального окружения (как показано ниже) кажется бессмысленным, так как цель использования pipenv
заключается в том, чтобы полностью избежать вышеупомянутого, устанавливая приложения Python и библиотечные модули в виртуальных окружениях с необходимыми зависимостями.
$ source ~/.venvs/pipenv/bin/activate
(pipenv) $ pipenv [OPTIONS] COMMAND [ARGS]...
Уведомление о любезности:
Pipenv обнаружил, что он работает в виртуальном окружении, поэтому он автоматически будет использовать это окружение, вместо того чтобы создавать собственное для любого проекта. Вы можете установить
PIPENV_IGNORE_VIRTUALENVS=1, чтобы заставить pipenv игнорировать это окружение и создать свое собственное.
Вы можете установить PIPENV_VERBOSITY=-1, чтобы подавить это предупреждение.
Из моего прошлого опыта выполнения команды
$ python3 -m pip install --user pipenv
в Ubuntu 22.04 и более ранних версиях, я не припоминаю, чтобы когда-либо испортил системные пакеты Python. Более того, опция --user
избежала вышеупомянутого конфликта.
Учитывая, что цель pipenv
заключается в установке приложений и библиотек Python с их зависимостями в уникальные виртуальные окружения, разрушит ли я какие-либо системные пакеты Python, просто установив его с:
$ python3 -m pip install --user --break-system-packages pipenv
Эта простая команда проще в реализации, чем утомительный процесс установки, описанный в моем обновленном разделе.
Существует много различных способов сделать это, но вот моя рекомендация относительно одного относительно простого способа, который в целом позволит вам избежать проблем:
- Установите pipx с помощью
sudo apt install python3-pipx
- Используйте pipx для установки любого приложения Python, которое вам нужно, где “приложение” означает программу, которую вы хотите запустить, но не модифицировать. Например:
pipx install pipenv
. - Для любого кода Python, который вы хотите модифицировать, если это установленный пакет с открытым исходным кодом, он скажет вам, какие инструменты вам нужны (такие как pipenv, tox, hatch, pdm, pre-commit, pip-run и т.д.); используйте pipx, чтобы установить эти инструменты, а затем работайте над кодом. Если вы создаете новый проект с нуля, вы можете выбрать, какие из них использовать; снова используйте pipx, чтобы установить все, что вам нужно, а затем работайте над кодом.
а не с помощью apt
. Современный Python полагается на изолированные виртуальные окружения, чтобы вы могли установить разные наборы пакетов, не мешая друг другу, и pipx является примером инструмента, который будет создавать и управлять этими окружениями для вас за кулисами. Pip сам по себе этого не делает. Вот почему, когда вы пытаетесь установить что-то с помощью pip install --user
, вы можете оказаться в беспорядке.
Тем не менее, прежде чем вы сможете сделать что-то из этого, вам, вероятно, придется справиться с этой проблемой:
Следующие пакеты имеют неудовлетворенные зависимости:
python3-venv : Зависит от: python3 (= 3.12.3-0ubuntu1), но 3.12.3-0ubuntu2 должен быть установлен
E: Невозможно исправить проблемы, у вас удерживаемые сломанные пакеты.
Я не уверен, что именно вам нужно сделать здесь, но вы можете обратиться к Невозможно исправить проблемы, у вас удерживаемые сломанные пакеты, чтобы разобраться, с чего начать. (Я бы предположил, что вам, возможно, придется обновить систему до последних доступных версий python3
и/или python3-venv
, но я не уверен.)
Ответ или решение
Установка pipenv
в Ubuntu 24.04 может вызвать некоторые трудности, особенно в свете последних изменений в управлении пакетами Python. В этой статье мы обсудим, как успешно установить pipenv
, обходя препятствия, о которых вы упомянули.
Шаг 1: Установка необходимых пакетов
Перед тем, как приступать к установке pipenv
, убедитесь, что у вас установлены некоторые необходимые пакеты. Откройте терминал и выполните следующие команды:
sudo apt update
sudo apt install python3 python3-pip python3-venv python3-pipx
Шаг 2: Устранение конфликтов зависимостей
Если вы сталкиваетесь с ошибками, связанными с зависимостями (например, unmet dependencies
), попробуйте выполнить следующие действия:
-
Проверьте наличие обновлений системы:
sudo apt upgrade
-
Если у вас возникли проблемы из-за "удерживаемых пакетов", вы можете попытаться устранить их, используя следующие команды:
sudo apt --fix-broken install sudo dpkg --configure -a
-
После устранения конфликтов выполните повторную проверку зависимостей перед установкой.
sudo apt install python3-venv
Шаг 3: Создание виртуального окружения
В Ubuntu 24.04 рекомендуется устанавливать пакеты в виртуальные окружения, чтобы избежать конфликтов с системными библиотеками. Давайте создадим виртуальное окружение для установки pipenv
.
-
Создайте каталог для виртуальных окружений, если его еще нет:
mkdir -p ~/.venvs
-
Создайте новое виртуальное окружение:
python3 -m venv ~/.venvs/pipenv
Шаг 4: Установка pipenv
Теперь, когда виртуальное окружение создано, можно установить pipenv
. Используйте команду:
~/.venvs/pipenv/bin/pip install pipenv
Шаг 5: Настройка удобного доступа к pipenv
Чтобы использовать pipenv
из командной строки без указания полного пути, создайте символическую ссылку:
ln -s ~/.venvs/pipenv/bin/pipenv ~/.local/bin/
Теперь вы можете запускать pipenv
, просто вводя команду в терминал:
pipenv [OPTIONS] COMMAND [ARGS]...
Заключение
Таким образом, установка pipenv
в Ubuntu 24.04 становится значительно более управляемым процессом, если следовать описанным шагам и использовать виртуальные окружения. Это не только предотвращает конфликты с системными пакетами, но и упрощает управление зависимостями Python в ваших проектах. Если у вас возникли дополнительные вопросы или проблемы, рекомендуется обратиться к документации Ubuntu и Python, а также к сообществам поддержки.