Twine无法上传到 pypi.org



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

twine upload dist/*

我得到了以下输出:

将分配上传到 https://upload.pypi.org/legacy/

正在上传 xyz-1.9.1.tar.gz

HTTPError: 400 客户端错误: 提供: 无效要求: 'xyz (1.9.1(' 网址:https://upload.pypi.org/legacy/

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

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_requires。 没有替代provides,因为试图赋予该字段任何形式意义会导致问题,这些问题超过了这样一个字段可能带来的微小好处。 但是,如果您坚持使用provides,似乎 PyPI 出于某种原因要求字段的值是有效的要求字符串,而"xyz (1.9.1)"不是;一个有效的要求看起来像"xyz == 1.9.1"或"xyz (== 1.9.1)",但是,如前所述,这些实际上没有任何意义。

PS:我建议您阅读 Python 打包用户指南中的"打包和分发项目",了解现代推荐的 Python 打包实践。

相关内容

  • 没有找到相关文章

最新更新