仅安装pep 518构建系统要求以构建sdist

问题描述

PEP 518介绍了pyproject.toml文件,以及描述构建所需工具的部分:

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

在这里,我要告诉构建系统(暗指setuptools),在运行构建之前,我需要安装这三个要求。 (是的,实际上我确实需要numpy作为 build 流程的一部分。)

当我运行pip wheel时,它知道要在此文件中查找此部分,安装要求,然后组装轮子。但是pip无法创建sdist发行版(及其维护者seem reluctant要添加一个发行版),因此我需要运行python setup.py sdist。这就是问题所在:setup.py不知道它需要numpy,并且构建失败。

是否存在一种标准方法来安装需求,然后构建sdist?特别是pip已朝着建立隔离的方向发展,那么可以通过隔离来完成吗?如果不这样做,我可以创建自己的环境以进行某种隔离。那么,在某些环境中安装需求的最佳方法是什么?

解决方法

一种方法是使用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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...