Вопрос или проблема
Сегодня я обновился до Ubuntu 24.04 LTS. Я сталкиваюсь с проблемами при работе с пакетами Python. Я пытался установить их с помощью pip
, но получил ошибку, связанную с externally-managed-environment
. Затем я попробовал установить несколько пакетов с помощью pipx
. Команда pipx list
показывает следующее
venvs находятся в /home/raf/.local/share/pipx/venvs
программы доступны в вашем $PATH по адресу /home/raf/.local/bin
мануалы доступны по адресу /home/raf/.local/share/man
пакет h5py 3.11.0, установлен с использованием Python 3.12.3
- f2py (символическая ссылка отсутствует или указывает на неожиданное место)
- numpy-config (символическая ссылка отсутствует или указывает на неожиданное место)
пакет ipykernel 6.29.5, установлен с использованием Python 3.12.3
- debugpy
- ipython
- ipython3
- jupyter
- jupyter-kernel
- jupyter-kernelspec
- jupyter-migrate
- jupyter-run
- jupyter-troubleshoot
- pygmentize
- man1/ipython.1
пакет jupyter 1.1.1, установлен с использованием Python 3.12.3
- httpx
- jlpm
- jsonpointer
- jsonschema
- jupyter-console
- jupyter-dejavu
- jupyter-events
- jupyter-execute
- jupyter-lab
- jupyter-labextension
- jupyter-labhub
- jupyter-nbconvert
- jupyter-notebook
- jupyter-server
- jupyter-trust
- normalizer
- pybabel
- pyjson5
- send2trash
- wsdump
- debugpy (символическая ссылка отсутствует или указывает на неожиданное место)
- ipython (символическая ссылка отсутствует или указывает на неожиданное место)
- ipython3 (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-kernel (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-kernelspec (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-migrate (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-run (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-troubleshoot (символическая ссылка отсутствует или указывает на неожиданное место)
- pygmentize (символическая ссылка отсутствует или указывает на неожиданное место)
- man1/ipython.1 (символическая ссылка отсутствует или указывает на неожиданное место)
пакет jupyter-core 5.7.2, установлен с использованием Python 3.12.3
- jupyter (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-migrate (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-troubleshoot (символическая ссылка отсутствует или указывает на неожиданное место)
пакет jupyterlab 4.2.5, установлен с использованием Python 3.12.3
- jlpm (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-lab (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-labextension (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-labhub (символическая ссылка отсутствует или указывает на неожиданное место)
пакет matplotlib 3.9.2, установлен с использованием Python 3.12.3
- fonttools
- pyftmerge
- pyftsubset
- ttx
- f2py (символическая ссылка отсутствует или указывает на неожиданное место)
- numpy-config (символическая ссылка отсутствует или указывает на неожиданное место)
- man1/ttx.1
пакет notebook 7.2.2, установлен с использованием Python 3.12.3
- debugpy (символическая ссылка отсутствует или указывает на неожиданное место)
- httpx (символическая ссылка отсутствует или указывает на неожиданное место)
- ipython (символическая ссылка отсутствует или указывает на неожиданное место)
- ipython3 (символическая ссылка отсутствует или указывает на неожиданное место)
- jlpm (символическая ссылка отсутствует или указывает на неожиданное место)
- jsonpointer (символическая ссылка отсутствует или указывает на неожиданное место)
- jsonschema (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-dejavu (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-events (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-execute (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-kernel (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-kernelspec (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-lab (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-labextension (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-labhub (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-migrate (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-nbconvert (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-notebook (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-run (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-server (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-troubleshoot (символическая ссылка отсутствует или указывает на неожиданное место)
- jupyter-trust (символическая ссылка отсутствует или указывает на неожиданное место)
- normalizer (символическая ссылка отсутствует или указывает на неожиданное место)
- pybabel (символическая ссылка отсутствует или указывает на неожиданное место)
- pygmentize (символическая ссылка отсутствует или указывает на неожиданное место)
- pyjson5 (символическая ссылка отсутствует или указывает на неожиданное место)
- send2trash (символическая ссылка отсутствует или указывает на неожиданное место)
- wsdump (символическая ссылка отсутствует или указывает на неожиданное место)
- man1/ipython.1 (символическая ссылка отсутствует или указывает на неожиданное место)
пакет numpy 2.1.0, установлен с использованием Python 3.12.3
- f2py
- numpy-config
Теперь jupyter notebook
показывает пустую страницу в браузере. А при попытке запустить ноутбук ipynb в VS code я получаю Выполнение ячеек с 'Python 3.12.3' требует пакета ipykernel.
Вы можете установить ipython с помощью apt, используя sudo apt install python3-ipython jupyter
. Я проверил, что это работает в Ubuntu 24.04. Удалите пакет pipx.
Некоторые пользователи сообщили о проблемах с jupyter notebook и snap firefox. Вы можете установить версию Firefox через APT для лучшей совместимости. См. Как установить Firefox в виде традиционного deb-пакета (без snap) в Ubuntu 22.04 или более поздних версиях?
Мой пакет notebook
также вышел из строя, но
pipx reinstall notebook
исправил это.
В дополнение, ваш pipx list
показывает слишком много пакетов pipx. Я думаю, вы неправильно понимаете, что такое pipx. pipx
устанавливает пакеты в свою собственную виртуальную среду и затем “экспортирует” их скрипты. Разные пакеты независимы, так что ваш пакет notebook
не имеет доступа к пакету numpy
. Чтобы установить пакеты Python в пакеты pipx, вам нужно использовать pipx inject
.
Таким образом, чтобы установить numpy
и matplotlib
в вашу установку notebook
, вы бы запустили
pipx inject notebook numpy matplotlib
Ubuntu может иметь python без pip, следуя этим шагам.
-
Установите библиотеку для виртуальных сред.
sudo apt install python3-venv
-
Создайте среду (здесь я использую my_env).
python3 -m venv my_env
-
Активируйте эту среду.
source my_env\bin\ activate
Примечание: вы должны увидеть имя my_env в скобках в начале строки. На скриншоте ниже моя среда называется torch.
-
Обновите pip.
pip install -m pip --upgrade
Ответ или решение
При переходе на новую версию Ubuntu 24.04 LTS могут возникнуть различные проблемы, связанные с управлением и установкой Python-пакетов с использованием инструмента pip
. Одна из наиболее распространенных ошибок связана с сообщением об "externally-managed-environment", о чем свидетельствует обсуждение на форумах и в сообществе поддержки. Рассмотрим основные моменты, которые могут помочь в решении данных проблем.
Теория
Основная проблема, с которой сталкиваются пользователи, заключается в изменениях, внесенных в новую версию Ubuntu, где более активно используется пакетный менеджер pipx
для изолированной установки Python-программ. Это вызвано желанием отделить системные и пользовательские пакеты, чтобы избежать конфликтов между ними. pipx
создает виртуальную среду для каждого установленного пакета, что гарантирует их независимость и уменьшает риск возникновения проблем совместимости.
Однако, это нововведение может привести к тому, что некоторые пользователи сталкиваются с отсутствием симлинков или неправильными путями к ним, что видим в выводе команды pipx list
. Такие проблемы могут возникать, если PATH не настроен корректно или если конфигурация окружения была нарушена.
Пример
Рассмотрим один из примеров, представленных в проблеме. У пользователя при запуске команды jupyter notebook
в браузере отображается пустая страница, а в среде разработки VS Code возникает сообщение о необходимости установки пакета ipykernel
. Это указывает на некорректную установку или отсутствующие симлинки в виртуальном окружении, созданном pipx
.
Пример вывода команды pipx list
также показывает, что многие пакеты содержат сообщение о "symlink missing or pointing to unexpected location". Это может быть связано с тем, что pipx
не смог корректно настроить симлинки для скриптов, установленных в виртуальные среды.
Применение
Для решения этой проблемы следуйте следующим шагам:
-
Удаление и повторная установка пакетов: Используйте
pipx reinstall <package_name>
, чтобы устранить проблемы с конфигурацией пакета. Это поможет сбросить настройки и заново создать необходимые симлинки. -
Настройка окружения:
- Убедитесь, что ваше окружение настроено корректно. Например, добавьте путь
/home/raf/.local/bin
в переменную среды PATH, чтобы все необходимые скрипты были доступны из командной строки. - Проверьте, что установлены все необходимые зависимости для работы с
pipx
иpip
.
- Убедитесь, что ваше окружение настроено корректно. Например, добавьте путь
-
Установка пакетов через APT: Рассмотрите возможность установки некоторых пакетов через APT, как это предлагается для
ipython
иjupyter
. Это может быть более стабильным решением для Ubuntu 24.04. -
Корректное использование
pipx
: Важно понимать, чтоpipx
предназначен для установки независимых программ, а не библиотек, которые взаимодействуют друг с другом в одном виртуальном окружении. Если вам нужно использовать несколько пакетов вместе (например,numpy
иmatplotlib
вnotebook
), используйте командуpipx inject
. -
Создание виртуальных окружений: Для более сложных зависимостей создайте отдельные виртуальные окружения с помощью
python3 -m venv
. Активируйте это окружение, после чего установите необходимые пакеты с помощьюpip
. -
Обновление
pip
: Убедитесь, чтоpip
обновлен до последней версии. Командаpip install -m pip --upgrade
обеспечит вас актуальным менеджером пакетов. -
Установка альтернативного браузера: В случае проблем с
jupyter notebook
на Firefox, установленном как snap, установите APT-версию браузера для улучшения совместимости.
Следуя этим рекомендациям, вы сможете минимизировать проблемы с установкой и использованием Python-пакетов в новом окружении Ubuntu. 시스템의 변경 사항 및 복잡한 의존성을 잘 다루면, 시스템과 별개의 환경에서 Python 응용 프로그램을 안정적으로 실행할 수 있습니다.