gpt4 book ai didi

python - 为什么我的 Python 包的分类器没有出现在测试 PyPI 上?

转载 作者:太空狗 更新时间:2023-10-30 02:30:32 25 4
gpt4 key购买 nike

我正在学习如何按照 Python Packaging User Guide 中的建议发布 Python 包.我根据 Basic Use 中的示例创建了一个简单的 setup.py setuptools 文档部分:

from setuptools import setup, find_packages

setup(
name="HelloWorld",
version="0.1",
packages=find_packages(),

# metadata for upload to PyPI
author="Me",
author_email="me@example.com",
description="This is an Example Package",
url = "http://example.com/HelloWorld/",
classifiers = [
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: Python Software Foundation License',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2',
],
)

我构建了源分发版,在 Test PyPI site 注册了 HelloWorld 包,并使用 twine 将包的 tarball 上传到 Test PyPI 站点。但是,分类器不会出现在 Test PyPI 的包页面上。此外,它们不在发行版的 PKG-INFO 中:

# https://testpypi.python.org/pypi?name=HelloWorld&version=0.1&:action=display_pkginfo

Metadata-Version: 1.1
Name: HelloWorld
Version: 0.1
Author: Me
Author-email: me at example com
Home-page: http://example.com/HelloWorld/
Summary: This is an Example Package
Platform: UNKNOWN

最佳答案

我确认分类器确实出现在我运行 setup.py sdist 时创建的 PKG-INFO 文件中:

$ cat HelloWorld.egg-info/PKG-INFO

Metadata-Version: 1.0
Name: HelloWorld
Version: 0.1
Summary: This is an Example Package
Home-page: http://example.com/HelloWorld/
Author: Me
Author-email: me@example.com
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Python Software Foundation License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2

但第一行显示元数据版本为 1.0 (PEP 241),但分类器是在元数据版本 1.1 (PEP 314) 中添加的。未正确检测到元数据版本,即使我使用的是最新版本的 setuptools (6.0.2)。

问题的原因是我的系统Python。我正在使用 Python 2.7.2 附带的 OS X 10.8 (Mountain Lion),如 this SO answer 中所述.这个版本有 a bug in metadata version detection , 这是 fixed in 2.7.3 .通过检查 bug patch ,我发现一个解决方法是将这些关键字之一——providesrequiresobsoletes——传递给 setup功能。例如,将此添加到 setup 调用中:

setup(
name="HelloWorld",
version="0.2",
# ...
provides=['hours.of.debugging.fun'],
)

生成的本地 PKG-INFO 文件现在具有元数据版本 1.1,分类器现在出现在 Test PyPI 站点上。

关于python - 为什么我的 Python 包的分类器没有出现在测试 PyPI 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26284609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com