无法上传到 pypi:来自 https://upload.pypi.org/legacy/的 400 错误请求

问题描述 投票:0回答:1

我已经构建了一个Python包,并准备使用

twine
使用
python setup.py sdist bdist_wheel
制作一个可分发的包。这在
dist
目录中创建了两个文件:

PACKAGENAME-0.1.1-py3-none-any.whl
PACKAGENAME-0.1.1.tar.gz

setup.py
脚本已配置为:

from setuptools import setup, find_packages
setup(
    name='PACKAGE NAME',
    version='0.1.1',
    author='blackthorne18',
    description='Testing package',
    url='GITHUBURL', #This URL links to a public repository on github of the package directory
    py_modules=['entrypoint', 'runscript'],
    packages=find_packages(),
    install_requires=[requirements],
    python_requires='>=3.10',
    classifiers=[
        "Programming Language :: Python :: 3.10",
        "Operating System :: OS Independent",
    ],
    entry_points='''
        [console_scripts]
        PACKAGE=entrypoint:main
    '''
)

我的 pypi 帐户的身份验证已使用基于令牌的身份验证在

$HOME/.pypirc
中设置。我可以毫无问题地创建包并将其上传到 test.pypi。

$ twine upload --repository testpypi dist/* --verbose

Uploading PACKAGENAME-0.1.1.tar.gz
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 27.8/27.8 kB • 00:00 • 29.3 MB/s
INFO     Response from https://test.pypi.org/legacy/:                                                                             
         200 OK                                                                                                                   
INFO     <html>                                                                                                                   
          <head>                                                                                                                  
           <title>200 OK</title>                                                                                                  
          </head>                                                                                                                 
          <body>                                                                                                                  
           <h1>200 OK</h1>                                                                                                        
           <br/><br/>                                                                                                                                                                                                                     
          </body>                                                                                                                 
         </html>                                                                                                                  
View at:
https://test.pypi.org/project/PACKAGENAME/0.1.1/

如果我尝试将相同的发行版上传到 pypi 存储库,则会收到以下错误:

$ twine upload dist/* --verbose Uploading PACKAGENAME-0.1.1-py3-none-any.whl 100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 27.9/27.9 kB • 00:00 • 16.0 MB/s INFO Response from https://upload.pypi.org/legacy/: 400 Bad Request INFO <html> <head> <title>400 Bad Request</title> </head> <body> <h1>400 Bad Request</h1> The server could not comply with the request since it is either malformed or otherwise incorrect.<br/><br/> POST body may not contain duplicate keys </body> </html> ERROR HTTPError: 400 Bad Request from https://upload.pypi.org/legacy/ Bad Request
如果我在包上运行

twine check dist/*

,它会说
dist/
中的两个文件都已通过检查。

我认为主要的错误消息是

POST正文可能不包含重复的键但我真的不知道这意味着什么。我该如何解决这个问题?

版本:

python version 3.10 twine version 4.0.1 (importlib-metadata: 5.0.0, keyring: 23.11.0, pkginfo: 1.8.3, requests: 2.28.1, requests-toolbelt: 0.10.1, urllib3: 1.26.12)
    
python python-3.x pypi twine
1个回答
0
投票
我今天也遇到了这个错误。

确保您之前尚未使用当前版本上传包。即使您删除了包,pypi 也会存储元数据以避免潜在的冲突。

解决方案是升级版本,只是为了确保这不是您所看到的错误的原因。

© www.soinside.com 2019 - 2024. All rights reserved.