在不运行的情况下猜测sdist中的元数据
dowsing的Python项目详细描述
嫁妆
短版:
python -m dowsing.pep517 /path/to/repo | jq .
或者
^{pr2}$基本推理
我不想执行任意的setup.py
来找出它们的基本
元数据。我不想在沙盒中使用pep517模块,因为通常
包忘记列出它们的构建时依赖项。在
这个项目比grepping源文件好一步,但也理解
build-system
在{
{cd4>在某些情况下,{cd4>将失败
可以是["?", "?"]
。在
咆哮
python打包的现实是,即使是最近的pep,也是最重要的
python包在它们的setup.py
中做一些有意思的事情:
- 导入(从本地代码,或
setup_requires
) - 从网上取东西
- 运行命令
- 确保安装了本机libs,或者有一个可以正常工作的C编译器
- 基于平台的deps选择
从基本上运行发行版的角度来看,它们生成消息
是为人类设计的,而不是使用我们现有的机制
PEP 508(环境标记)和518(pyproject.toml项目需要)。还有
没有指定的方式来请求本机lib,许多项目选择失败
在缺少lib时运行setup.py
。在
目标
这个项目是一座桥梁,主要是找出一些事情设置.py 但也了解一些受欢迎的PEP 517/518建筑商作为一站式商店,关于:
- 不实际执行,所以fetch或exec不会导致它失败[done]
- 如果我们可以找到版本字符串,但无法导入[done]
- 允许您在不同的平台上模拟
pep517
模块的输出[done] - 一个较低级别的api,适用于对设置参数所在的位置进行编辑 定义[完成]
- 列出潜在的导入,并猜测缺少的构建时dep(一些
就像
numpy.distutils
很清楚)[待办事项]
做这个“对”
一堆这样的东西掩盖了现实中的问题。如果你有
一个现有的沙盒,可以接受约30%的项目只是失败,你
可以依赖pep517
模块的API在
python的当前版本。在
如果您愿意运行代码并让它花费更长的时间,请查看
或者让它生成元数据(假设
你想要的就在里面)。一个例子是dowsing/_demo_pep517.py
这个项目的dowsing.pep517
api的设计目的是做类似的事情,但不是这样
由于缺少生成时要求而失败。在
进一步阅读
- PEP 241,元数据1.0
- PEP 314,元数据1.1
- PEP 345,元数据1.2
- PEP 566,元数据2.1
- https://packaging.python.org/specifications/core-metadata/
- https://setuptools.readthedocs.io/en/latest/setuptools.html#metadata
许可证
道辛版权所有Tim Hatch,并根据
麻省理工学院的执照。我在一个开放的
源代码许可证。这是我的个人存储库;您收到的许可证
我的代码来自我而不是我的雇主。有关详细信息,请参阅LICENSE
文件。在
- 项目
标签: