Установите только системные требования сборки pep 518 (для сборки sdist)

PEP 518 представилpyproject.toml файл, а также раздел с описанием инструментов, необходимых для сборки:

[build-system]
requires = ["setuptools", "wheel", "numpy>=1.13"]

Здесь я сообщаю системе сборки (неявно setuptools), что мне нужно установить эти три требования, прежде чем я смогу запустить сборку. (И да, мне действительно нужен numpy как часть процесса сборки.)

Когда я бегу pip wheel, он знает, как найти этот раздел в этом файле, установить требования и затем построить колесо. Но у pip нет возможности создатьsdistдистрибутив (и его сопровождающие, похоже, не хотят его добавлять), поэтому мне нужно запуститьpython setup.py sdist. И вот где возникает проблема: setup.py не знает, что ему нужен numpy, и сборка не выполняется.

Есть ли стандартный способ просто установить требования, а затем собрать sdist? В частности, pip переместился в сторону изоляции сборки, так можно ли это сделать с помощью изоляции? В противном случае я мог бы создать свою собственную среду для некоторой изоляции; тогда как лучше всего установить требования в некоторой среде?

2 ответа

Решение

Один из способов - проект pypa pep517 (хотя модуль отмечен как "экспериментальный")

вот пример dist со специальной зависимостью, которую я пробовал:

# setup.py
from setuptools import setup
import astpretty
setup(name='wat', version='1')
# pyproject.toml
[build-system]
requires = ["setuptools", "wheel", "astpretty"]
build-backend = "setuptools.build_meta"
$ python -m pep517.build --source .
WARNING: You are using pip version 20.2.1; however, version 20.2.2 is available.
You should consider upgrading via the '/tmp/x/venv/bin/python -m pip install --upgrade pip' command.
running egg_info
creating wat.egg-info
writing wat.egg-info/PKG-INFO
writing dependency_links to wat.egg-info/dependency_links.txt
writing top-level names to wat.egg-info/top_level.txt
writing manifest file 'wat.egg-info/SOURCES.txt'
reading manifest file 'wat.egg-info/SOURCES.txt'
writing manifest file 'wat.egg-info/SOURCES.txt'
running sdist
running egg_info
writing wat.egg-info/PKG-INFO
writing dependency_links to wat.egg-info/dependency_links.txt
writing top-level names to wat.egg-info/top_level.txt
reading manifest file 'wat.egg-info/SOURCES.txt'
writing manifest file 'wat.egg-info/SOURCES.txt'
warning: sdist: standard file not found: should have one of README, README.rst, README.txt, README.md

running check
warning: check: missing required meta-data: url

warning: check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied

creating wat-1
creating wat-1/wat.egg-info
copying files to wat-1...
copying pyproject.toml -> wat-1
copying setup.py -> wat-1
copying wat.egg-info/PKG-INFO -> wat-1/wat.egg-info
copying wat.egg-info/SOURCES.txt -> wat-1/wat.egg-info
copying wat.egg-info/dependency_links.txt -> wat-1/wat.egg-info
copying wat.egg-info/top_level.txt -> wat-1/wat.egg-info
Writing wat-1/setup.cfg
Creating tar archive
removing 'wat-1' (and everything under it)
$ ls dist/
wat-1.tar.gz

Вы хотите постройки . Это проект под управлением Python Package Authority (PyPA), который был создан специально для сборки пакетов PEP 517.

Он построит и колесо, и sdist. Однако вы также можете указать, чтобы он создавал только sdist.

Другие вопросы по тегам