Сборка Python всегда переустанавливает setuptools

#python #setuptools #python-wheel

Вопрос:

Я использую Python 3.8 в conda и использую сборку для создания пакетов. Хотя в моей среде Conda у меня уже есть setuptools 51.0 и wheel 0.36, при каждом запуске python -m build --wheel я вижу следующие сообщения:

 Found existing installation: setuptools 49.2.1
Uninstalling setuptools-49.2.1:
  Successfully uninstalled setuptools-49.2.1
Collecting wheel
  Using cached wheel-0.37.0-py2.py3-none-any.whl (35 kB)
Collecting setuptools>=51
  Using cached setuptools-58.3.0-py3-none-any.whl (946 kB)
Installing collected packages: wheel, setuptools
Successfully installed setuptools-58.3.0 wheel-0.37.0
 

Здесь существующие пакеты даже не соответствуют тому, что у меня есть в Conda, и я не думаю, что мне нужны новейшие пакеты. Кто-нибудь может объяснить, почему это происходит?

Комментарии:

1. build использует новые чистые виртуальные среды для каждой сборки. Как вы думаете, почему вам не нужна новейшая setuptools версия?

2. Никаких конкретных причин, просто чувствовал, что существующие пакеты в порядке. Так нормально ли, что build каждый раз устанавливает новейшие пакеты в новый venv? Просто казалось, что это немного повторяется каждый раз.

3. Да, это нормально. build делает это, чтобы попытаться обеспечить максимально чистую сборку.

Ответ №1:

обратитесь к этому разделу https://pypa-build.readthedocs.io/en/latest/#python—m-build-optional-arguments

По умолчанию сборка будет собирать пакет в изолированной среде, но это поведение можно отключить --no-isolation .

поэтому вам может потребоваться добавить --no-isolation флаг для принудительного использования виртуальной среды вашего проекта следующим образом:

 python -m build --wheel --no-isolation
 

Комментарии:

1. Спасибо! Именно то, что я искал.