python - Twine 无法上传到 pypi.org

标签 python pypi twine

我有一个位于 python.pypi.org 上的 python 包 (xyz)。我正在尝试发布一个新版本,并且正在使用 twine 进行上传。我按照教程中的说明修复了 ~/.pypirc 文件中的所有内容。当我运行以下命令时:

twine upload dist/*

我得到以下输出:

Uploading distributions to https://upload.pypi.org/legacy/

Uploading xyz-1.9.1.tar.gz

HTTPError: 400 Client Error: provides: Invalid requirement: 'xyz (1.9.1)' for url: https://upload.pypi.org/legacy/

我不确定为什么会发生这种情况,但我猜测这可能是我的 setup.py 文件,但这是我的 setup() 部分中的 block 。

setup(
name='xyz',
version=__version__,
author='xyz',
author_email='xyz',
description='xyz package for xyz',
long_description=long_description,
url='xyz',
packages=PACKAGES,
package_dir=PACKAGE_DIR,
package_data=PACKAGE_DATA,
ext_modules=EXTENSIONS,
license='MIT License',
keywords=('xyz'),
classifiers=[
             'Development Status :: 5 - Production/Stable',
             'Intended Audience :: Education',
             'Intended Audience :: Science/Research',
             'License :: OSI Approved :: MIT License',
             'Operating System :: MacOS',
             'Operating System :: Microsoft :: Windows',
             'Operating System :: POSIX',
             'Programming Language :: Python',
             'Programming Language :: Python :: 2',
             'Programming Language :: Python :: 3',
             'Topic :: Scientific/Engineering :: xyz',
             'Topic :: Scientific/Engineering :: xyz',
            ],
scripts=SCRIPTS,
requires=['NumPy (>=1.7)', ],
provides=['xyz'.format(__version__)]

)

有人可以帮我解决这个问题吗?谢谢。

注意:“xyz”是包的替换名称。不会有重复的包。

最佳答案

(我假设 setup.py 中的 provides=['xyz'.format(__version__)] 行实际上是 provides=[ 'xyz ({})'.format(__version__)],否则这没有任何意义。)

首先,setup()providesrequires 参数已被弃用,并且据我所知,从未被弃用过。实际上用于任何东西。 requires 现在应该拼写为 install_requiresprovides 是无可替代的,因为试图赋予该字段任何正式含义会导致问题,这些问题超过了该字段可能带来的微小好处。但是,如果您坚持使用 provides,PyPI 似乎出于某种原因要求该字段的值是有效的要求字符串,其中 "xyz (1.9.1)" 是不是;有效的要求看起来像“xyz == 1.9.1”或“xyz (== 1.9.1)”,但是,如前所述,这些都不是实际上意味着任何事情。

PS:我建议你阅读"Packaging and Distributing Projects"来自Python Packaging User Guide对于现代的、推荐的 Python 打包实践。

关于python - Twine 无法上传到 pypi.org,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45764909/

相关文章:

python - 我想根据方法的参数对方法中的列表进行排序

python - 如何下载整个 pypi Python 包索引

python - pip 依赖项可以排除或包含在语义预发布标签中吗?

python - 为什么使用 pip 而不是 easy_install?

python - 基于分类列创建填充随机元素的新列

python - 对时间戳数组使用互相关有意义吗?

python - Pip 没有找到匹配的分布(我的图书馆)

python - Twine 每次都要求我输入密码 : how to use the . pypirc

python - Twine 在不提示输入密码的情况下挂起

python - Pdf Miner 返回奇怪的字母/字符