Передача параметров внутренним инструментам настройки при вызове сборки python -mPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Передача параметров внутренним инструментам настройки при вызове сборки python -m

Сообщение Anonymous »

Я только начал преобразовывать свой прямой вызов setup.py в использование модуля сборки pyproject.toml, чтобы обеспечить рекомендуемое разделение внешнего интерфейса при вызове внутреннего механизма сборки (в моем случае — setuptools). Я столкнулся с проблемой при попытке передать параметр --tag-build для использования в инструментах настройки (наши сборки CI/CD требуют большей детализации в отношении отметки времени по умолчанию, предоставляемой параметром --tag-date, из-за того, как Кэширование pip работает, необходимо включить значение HHMMSS в метку времени). Я использовал следующий пример командной строки (с использованием Python 3.10.8)

Код: Выделить всё

python3  -m build --wheel  '--config-setting=--build-option=-v' '--config-setting=--build-option=egg_info' '--config-setting=--build-option=-bpost20240119000000'
Проходя сквозь

Код: Выделить всё

build/__main__.py
, приведенная выше командная строка, похоже, правильно проанализирована, список config_settings содержит различные аргументы для серверной части: config_settings == { '--build-option': [ '-v', ' egg_info', '-bpost20240119000000']}. Насколько я понимаю, этот список затем передается на серверную часть. К сожалению, мне еще предстоит выяснить, почему отладка Pycharm не удалась в _build_in_isolated_env().
Я надеюсь, что другие расскажут, как они использовали эти параметры egg_info. модулем сборки для достижения желаемого эффекта. Или, возможно, я могу предпринять дополнительные шаги, чтобы выявить основную причину.
Я ценю любые отзывы и предложения. MTIA.
вывод вызова сборки:

Код: Выделить всё

$python3  -m build  --wheel  '--config-setting=--build-option=-v' '--config-setting=--build-option=egg_info' '--config-setting=--build-option=-bpost20240119000000' |& tee build-failure.log
* Creating venv isolated environment...
* Installing packages in isolated environment... (setuptools>=42, wheel)
* Getting build dependencies for wheel...
* Installing packages in isolated environment... (setuptools>=50.3.2, wheel, wheel>=0.35.1)
* Building wheel...
/tmp/build-env-9qdhq0jy/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsWarning: `install_requires` overwritten in `pyproject.toml` (dependencies)
corresp(dist, value, root_dir)
/tmp/build-env-9qdhq0jy/lib/python3.10/site-packages/setuptools/sandbox.py:13: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
import pkg_resources
usage: _in_process.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: _in_process.py --help [cmd1 cmd2 ...]
or: _in_process.py --help-commands
or: _in_process.py cmd --help

error: option --dist-dir not recognized

ERROR Backend subprocess exited when trying to invoke build_wheel

pkg_resources отсутствует в setup.py, setup.cfg, pyproject.toml и --dist-dir.
Python3 ./ Вызов setup.py egg_info -bpost20240119000000 bdist_wheel не вызывает проблем, как и ожидалось dist/ioif_core-0.8.4.post20240119000000-py3-none-any.whl создан.
---- 1-е обновление ----
добавление --no-isolation в параметры сборки -> колесо генерируется, помещается в dist/, но опция -b не используется (файл колеса: dist/ioif_core-0.8.4-py3-none-any.whl). Итак, мне нужно разобраться с новыми вопросами: что не так с использованием изолированного виртуального окружения по сравнению с его отсутствием; что происходит с egg_info -b
---- 2-е обновление ----
Это использование инструментов настройки 60.2.0.
Является ли философия упаковки PEP517 теперь такой, что метаданные должны быть установлены соответствующим образом, а не зависеть от устаревших команд, таких как egg_info -b ? Значит, серверная часть должна ожидать, что метаданные проекта будут управлять такими аспектами, как управление версиями? Таким образом, хотя инструменты настройки по-прежнему документируют использование egg_info -b для пометки ежедневных сборок и т. д., без интерфейса сборки, передающего эти параметры (я вижу, что _buid_with_temp_data() в build_meta.py не передает параметры, не являющиеся глобальными параметрами) для процесса сборки), жизнеспособным кажется только обновление метаданных.
В этом духе я изменил (пока) файл setup.py для извлечения (до вызова установки) значение версии из pyproject.toml или setup.cfg и, если оно установлено, с помощью переменной env, определяющей строку формата, генерирует результирующее значение версии, передавая в качестве именованного аргумента в настройку). Это прекрасно работает, но только если при вызове сборки python3 -m используется --no-isolation. У меня есть оператор печати, показывающий правильное значение версии в обоих сценариях, но он не используется, если я не использую --no-isolation. Мне нравится концепция изоляции env в PEP517, я бы предпочел использовать ее, но в работе CI/CD она не имеет особой ценности, поэтому -n выглядит как экономия времени. Есть ли вообще опция сборки, позволяющая не обновлять временную среду сборки, чтобы можно было провести анализ того, что там есть после сборки?

Подробнее здесь: https://stackoverflow.com/questions/778 ... on-m-build
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»