首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅安装pep 518构建系统要求(以生成sdist)

仅安装pep 518构建系统要求(以生成sdist)
EN

Stack Overflow用户
提问于 2020-08-24 04:52:06
回答 1查看 1.2K关注 0票数 3

佩普518介绍了pyproject.toml文件,以及描述构建所需工具的一节:

代码语言:javascript
复制
[build-system]
requires = ["setuptools", "wheel", "numpy>=1.13"]

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

当我运行pip wheel时,它知道如何在这个文件中查找这个部分,安装需求,然后构建轮子。但是pip无法创建sdist发行版(以及它的维护人员似乎不情愿添加一个发行版),所以我需要运行python setup.py sdist。这就是问题所在: setup.py不知道它需要numpy,而构建失败了。

是否有一种标准的方法只需安装需求,然后构建一个sdist?特别是,pip已经转向构建隔离,所以这可以用隔离来完成吗?如果做不到这一点,我可以创建自己的环境来隔离;那么,在某些环境中安装需求的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-24 05:33:54

一种方法是使用pypa项目pep517 (尽管模块被标记为“实验性”)

下面是我尝试过的具有特殊依赖关系的示例dist:

代码语言:javascript
复制
# setup.py
from setuptools import setup
import astpretty
setup(name='wat', version='1')
代码语言:javascript
复制
# pyproject.toml
[build-system]
requires = ["setuptools", "wheel", "astpretty"]
build-backend = "setuptools.build_meta"
代码语言:javascript
复制
$ 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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63554905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档