Why isn't setup.py metadata being used on PyPI?
我在 PyPi 上安装了我的包的 beta 版本。
来自 setup.py 的元信息(例如主页、类别等)出现在项目的 PyPi 页面上。
后来,我更新了项目。我在 setup.py 中唯一更改的是版本号。
更新:和往常一样,永远不要相信这样说的人。我从 setuptools 更改为 distutils! Cargo Cult 编程——我只是复制了另一个项目所做的。对不起。
但是项目的 PyPi 页面中的下一个版本没有元信息。
我正在努力弄清楚我是如何打破它的;我发现 PyPi 相当费力才能正确,所以我确定是我。
这一次,我在相当全新的 Windows 安装上使用了 Python 2.7.1(之前我使用的是 Python 2.6.x)
我几乎可以肯定使用不同的命令行来上传它。 (这次似乎需要签名和安装 pgp,我不记得上次需要)。
我应该在哪里查看为什么 setup.py 文件中的元信息不再被上传?
在 setup.py 上运行以下命令应该可以解决问题:
1 | $ python setup.py register |
理想情况下,您希望在上传的同时运行注册命令。在发布任何软件包(sdist、注册、上传)时,我通常至少使用三个命令。以下将对 PyPI 进行典型发布:
1 | $ python setup.py sdist register upload |
这篇文章的其余部分是对这些命令的作用的简要说明。
sdist 命令是构建源代码分发的少数构建命令之一。自从您上传了一个 .zip 文件后,您可能已经很熟悉它了。一个类似的命令是 bdist,它构建二进制发行版。
分发(或包)元数据与构建分发分开发送。 setuptools 的上传命令将上传您的项目构建(例如 myproject-0.0.zip)。应该使用 register 命令来更新元数据信息。 register 命令以它可以理解的格式将 PKGINFO(或 egg_info)发送到 PyPI。
这很难回答。你能给我们你使用的命令行吗?你的 setup.py 使用 distutils 或 setuptools 吗?您是否在两次之间更改了 pydistutils.cfg 或 .pypirc 文件?