Проблемы с pip в Ubuntu 24.04 LTS

Вопрос или проблема

Сегодня я обновился до 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, следуя этим шагам.

  1. Установите библиотеку для виртуальных сред.

    sudo apt install python3-venv
    
  2. Создайте среду (здесь я использую my_env).

    python3 -m venv my_env
    
  3. Активируйте эту среду.

    source my_env\bin\ activate
    

    Примечание: вы должны увидеть имя my_env в скобках в начале строки. На скриншоте ниже моя среда называется torch.

    Screenshot

  4. Обновите 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 не смог корректно настроить симлинки для скриптов, установленных в виртуальные среды.

Применение

Для решения этой проблемы следуйте следующим шагам:

  1. Удаление и повторная установка пакетов: Используйте pipx reinstall <package_name>, чтобы устранить проблемы с конфигурацией пакета. Это поможет сбросить настройки и заново создать необходимые симлинки.

  2. Настройка окружения:

    • Убедитесь, что ваше окружение настроено корректно. Например, добавьте путь /home/raf/.local/bin в переменную среды PATH, чтобы все необходимые скрипты были доступны из командной строки.
    • Проверьте, что установлены все необходимые зависимости для работы с pipx и pip.
  3. Установка пакетов через APT: Рассмотрите возможность установки некоторых пакетов через APT, как это предлагается для ipython и jupyter. Это может быть более стабильным решением для Ubuntu 24.04.

  4. Корректное использование pipx: Важно понимать, что pipx предназначен для установки независимых программ, а не библиотек, которые взаимодействуют друг с другом в одном виртуальном окружении. Если вам нужно использовать несколько пакетов вместе (например, numpy и matplotlib в notebook), используйте команду pipx inject.

  5. Создание виртуальных окружений: Для более сложных зависимостей создайте отдельные виртуальные окружения с помощью python3 -m venv. Активируйте это окружение, после чего установите необходимые пакеты с помощью pip.

  6. Обновление pip: Убедитесь, что pip обновлен до последней версии. Команда pip install -m pip --upgrade обеспечит вас актуальным менеджером пакетов.

  7. Установка альтернативного браузера: В случае проблем с jupyter notebook на Firefox, установленном как snap, установите APT-версию браузера для улучшения совместимости.

Следуя этим рекомендациям, вы сможете минимизировать проблемы с установкой и использованием Python-пакетов в новом окружении Ubuntu. 시스템의 변경 사항 및 복잡한 의존성을 잘 다루면, 시스템과 별개의 환경에서 Python 응용 프로그램을 안정적으로 실행할 수 있습니다.

Оцените материал
Добавить комментарий

Капча загружается...