20

我正在尝试使用以下命令将 python 包上传到 PyPi:

pip install -e .
python setup.py bdist_wheel --universal
twine upload --repository-url https://upload.pypi.org/legacy/ dist/*

我收到此错误:

HTTPError:403 客户端错误:身份验证信息无效或不存在。对于网址:https ://upload.pypi.org/legacy/

我还尝试了以下命令:

twine upload dist/*
twine upload --repository-url pypi dist/*
twine upload --repository-url https://upload.pypi.org/legacy dist/*
python setup.py bdist_wheel --universal upload

使用位于同一目录中的 .pypirc 文件,我正在运行以下命令:

[distutils]
index-servers =
    pypi
    pypitest

[pypitest]
repository: https://testpypi.python.org/pypi/
username: <username>
password: <password>

[pypi]
repository: https://upload.pypi.org/legacy/
username: <username>
password: <password>

但我仍然被要求输入密码。(也尝试过使用 pypitest,在那里创建了一个帐户之后,但得到了同样的错误)

我也尝试过这样做,但删除了存储库行。

我尝试上传的包名曾经被占用,但现在已被删除-https: //pypi.python.org/pypi? name=&version=1.0.0&:action=display表示该包没有成立

我使用的用户名和密码与我用于成功登录https://pypi.python.org/pypi?%3Aaction=login_form的用户名和密码相同

4

11 回答 11

9

编辑:如果您使用的是Windows,请查看我的其他建议

我使用的帐户似乎存在某种错误。以下步骤为我修复了它:

  1. 创建一个新账户
  2. 使用新帐户上传包twine upload dist/*
  3. 将以前的帐户(您最初想用来上传的帐户)添加到包中作为所有者

另请注意,测试 pypi 服务器--repository-url https://test.pypi.org/legacy/需要从实时服务器创建不同的帐户--repository-url https://upload.pypi.org/legacy/

于 2017-10-09T10:30:02.937 回答
6

另一种方法可能是复制和粘贴不起作用 - 当我尝试在命令行中粘贴密码时,它显示了这个错误,但是当我手动输入它时它成功了。

编辑:看起来这是在Windows上粘贴的一个已知问题,请参阅https://pypi.org/help/#invalid-auth上的建议:

如果您使用 Windows 并尝试将密码或令牌粘贴到命令提示符或 PowerShell 中,请注意 Ctrl-V 和 Shift+Insert 不起作用。相反,您可以使用窗口菜单中的“编辑 > 粘贴”,或在“属性”中启用“使用 Ctrl+Shift+C/V 作为复制/粘贴”。这是 Python 的 getpass 模块的一个已知问题

于 2017-10-17T13:31:56.247 回答
6

PyPi 和 TestPyPi 是包索引的单独实例,它们具有单独的用户数据库。因此,必须创建单独的帐户。

也许你会很幸运,测试帐户名称不会被占用,你可以在测试中使用与生产中相同的命令。

(咕哝,咕哝,蟒蛇之禅,咕哝……)

于 2019-08-02T16:06:20.287 回答
6

我们输入密码的时候,密码没有错,我认为是bug。

我直接使用-u用户名和-p密码,而不使用控制台提供的字段(默认)。

我尝试在命令中运行它:

twine upload -u YOUR-USERNAME -p YOUR-PASSWORD --repository-url https://test.pypi.org/legacy/ dist/*

我在 Windows 上运行该命令:

命令图片

这个对我有用。希望这会有所帮助。

于 2019-11-05T17:42:23.513 回答
5

按照创建新包的 pypi 说明遇到了这个问题。该教程将带您上传到他们的测试服务器 ( --repository-url https://test.pypi.org/legacy/),为此我总是得到 403。

对于他们实际的上传服务器,(--repository-url https://upload.pypi.org/legacy/)我的凭据工作正常。很明显,他们的测试服务器和实时服务器之间的凭据存在一些差异,如果您遇到这个问题,这可能值得考虑。

于 2019-04-02T10:01:02.747 回答
2

我有同样的问题。对我有用的是(1)添加一个新电子邮件,验证它并使其成为主要。

于 2019-03-15T21:35:55.693 回答
1

手动输入密码。看起来很愚蠢,但它对我有用。

于 2020-08-12T08:58:53.810 回答
1

我在我的 ubuntu 20.04 机器上遇到了同样的错误。从这里我发现了一些东西

  • 我使用的是 vs code 集成终端,它使用的是 zsh 而不是 bash

然后我使用我的系统终端,它对我来说很好。

还要确保您已正确配置 setup.py。

于 2021-01-14T14:41:53.223 回答
1

在PyPI 和 TestPyPI 中分别使用凭据 ( , ) 和 ( , )验证帐户后,内容为:usr1pwd1usr2pwd2~/.pypi

[distutils]
index-servers=
    pypi
    testpypi

[pypi]
repository: https://upload.pypi.org/legacy/
username: usr1
password: pwd1

[testpypi]
repository: https://test.pypi.org/legacy/
username: usr2
password: pwd2

构建包后,为 TestPyPI 发布:

twine upload --repository testpypi dist/*

PyPI 发布:

twine upload --repository pypi dist/*
于 2021-04-12T21:32:04.327 回答
0

好吧,我觉得这很愚蠢,但这是我用来上传我的效率低下的解决方案。
在编辑器中输入类似的内容

__token__
yourTokenHere

Ctrl并使用+将其粘贴到用户名字段上。V
此外,我发现Windows+V对获取我的剪贴板历史记录很有用。

于 2021-08-19T13:12:43.773 回答
-1

我上传了一个项目,但是当我在 pypi 网站上查看时,它缺少 readme.md 文件。我不知道如何更新,所以我删除了项目,但接受一些警告。最后,我添加了 readme.md 文件并尝试再次上传项目,但出现此错误。所以,我前往 pypi 网站并完全删除了我上传的最后一个项目。之后我就可以用同一个账号上传了。希望这有效

于 2021-08-18T16:07:35.593 回答