Чтобы обновить twine до версии 1.11

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

У меня была такая же ошибка, как у twine upload TypeError, и я проверил свою версию twine, чтобы выяснить, что это 1.10.

$ twine --version
twine version 1.10.0 (pkginfo: 1.2.1, requests: 2.18.4, setuptools:
39.2.0, requests-toolbelt: 0.8.0, tqdm: 4.19.5)

Однако с помощью pip list я обнаружил, что версия twine — 1.11.

$ pip list
...
twine    1.11.0
...

Я попробовал:

$ sudo apt-get install --only-upgrade twine 

(см. здесь)

и обнаружил, что twine уже является последним выпуском (1.10.0-1) и не удалось обновить до 1.11.
twine находится здесь:

$ which twine
/usr/bin/twine

Как я могу обновить twine?

Когда вы устанавливаете пакеты через apt-get, устанавливается любая упакованная версия, а не последняя версия с upstream.

Для получения twine в форме pip, сначала необходимо удалить twine, установленный из репозиториев, а затем использовать pip/pip3 для установки.

sudo apt-get remove twine
sudo pip3 install twine

Если вторая команда говорит pip3: not found, попробуйте использовать просто pip вместо pip3.

Это должно установить версию из репозиториев PyPi. Возможно, вам нужно будет закрыть и открыть заново сеанс терминала, чтобы новая версия Twine была распознана. (Это при условии, что версия Twine с pip помещает исполняемый файл в расположение в вашей переменной окружения PATH; если нет, это потребует дополнительных действий, чтобы это работать так же, как упакованная версия twine.)

Я только что столкнулся с этой проблемой на Ubuntu 24.04. Пытался упаковать что-то с hatchling, но это было невозможно. Однако в этом выпуске решение, предложенное Томасом Уордом, не применимо, так как использование менеджеров пакетов ad hoc больше не разрешено:

$ sudo pip3 install twine
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.

Поэтому сборка и упаковка должны выполняться из виртуального окружения:

sudo apt purge twine

python3 -m venv env-build

source env-build/bin/activate

pip3 install build twine

Ответ или решение

Обновление программного обеспечения является важной частью управления ИКТ-средой, позволяя устранить ошибки, повысить функциональность и безопасность. Рассмотрим, как обновить Twine до версии 1.11, учитывая проблемы, описанные в вашем вопросе.

Теоретическая часть

Прежде чем углубляться в практические шаги, важно понять, какие типы пакетов существуют в Linux и как они устанавливаются. Существует два основных метода управления пакетами на базе Linux: использование системных пакетов и управление пакетами Python.

  1. Системные пакеты (установленные через apt-get или apt) обычно доступны в репозиториях вашей ОС. Эти пакеты могут быть немного устаревшими, так как проходят тщательный процесс тестирования перед включением в дистрибутивы. Это объясняет, почему у вас установлена версия Twine 1.10 через apt-get.

  2. Пакеты Python управляются с помощью pip, который взаимодействует с репозиторием Python Package Index (PyPI). Это позволяет получать последние версии пакетов, независимые от системных репозиториев.

Пример

В вашем случае apt-get не позволяет обновить Twine до версии 1.11, поскольку эта версия еще не прошла проверку в репозитории вашей системы. Вместо этого в pip list вы видите, что Twine версии 1.11 доступен, что подтверждает его наличие в репозитории PyPI.

При попытке обновления вы столкнулись с externally-managed-environment ошибкой, которая возникает, когда pip не может модифицировать системный Python из-за политики вашего дистрибутива (начиная с версии Ubuntu 22.04 и выше). Это требование нацелено на предотвращение конфликтов между системными пакетами и пакетами Python. Поэтому вам предложено пользоваться виртуальными окружениями.

Применение

Удаление системного пакета Twine

Первым шагом является удаление Twine, установленного через apt-get, поскольку его присутствие создает путаницу с версиями:

sudo apt-get remove twine

Создание виртуального окружения

В Linux рекомендуется использовать виртуальные окружения для изоляции пакетов Python. Это предотвращает конфликты и облегчает управление зависимостями:

  1. Убедитесь, что у вас установлен python3-venv. Если нет, установите его:

    sudo apt-get install python3-venv
  2. Создайте новое виртуальное окружение:

    python3 -m venv env-build
  3. Активируйте виртуальное окружение:

    source env-build/bin/activate

Установка Twine через pip

Теперь, когда ваше окружение настроено и изолировано, используйте pip для установки обновленной версии Twine:

pip install twine

Вы также можете установить дополнительные инструменты, такие как build, если это необходимо для вашего проекта:

pip install build

Последние версии будут установлены без конфликтов с системой.

Проверка версии

Проверьте установленную версию Twine:

twine --version

Убедитесь, что версия 1.11 успешна установлена и готова к использованию.

Возможные проблемы и их решение

  1. Проблема PATH: Убедитесь, что ваше виртуальное окружение активно, когда вы выполняете команды, так как может возникнуть путаница в PATH, и система будет по умолчанию использовать старую версию Twine.

  2. Зависимости: Если возникают проблемы с зависимостями, вы можете воспользоваться командой:

    pip install --upgrade pip setuptools wheel

    Это обновит основные инструменты установки, что может решить возникающие проблемы.

Завершение

После завершения работы, не забудьте деактивировать виртуальное окружение, если оно больше не нужно:

deactivate

Эти шаги помогут вам успешно обновить Twine до версии 1.11, избегая при этом конфликтов с системными пакетами и реализациями. Такой подход позволит вам эффективно управлять средой Python и использовать последние версии инструментов для разработки и развертывания Python-проектов.

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

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