How to fix poetry publish HTTP Error 403: Invalid or non-existent authentication information
Problem:
You intend to publish your package on PyPI using poetry using a command such as
poetry publish
However, you see the following error message:
Publishing mypackage (0.1.0) to PyPI
- Uploading mypackage-0.1.0-py3-none-any.whl FAILED
HTTP Error 403: Invalid or non-existent authentication information. See https://pypi.org/help/#invalid-auth for more information. | b'<html>\n <head>\n <title>403 Invalid or non-existent authentication information. See https://pypi.org/help/#invalid-auth for more information.\n \n <body>\n <h1>403 Invalid or non-existent authentication information. See https://pypi.org/help/#invalid-auth for more information.\n Access was denied to this resource.<br/><br/>\nInvalid or non-existent authentication information. See https://pypi.org/help/#invalid-auth for more information.\n\n\n \n'
Solution
First, you need to create a PyPI API token if you don’t have one already. The username/password authentication is deprecated.
Now run the following command to configure poetry:
poetry config http-basic.pypi __token__ APITOKEN
where APITOKEN
is the API token you want to use on this computer. Leave __token__
as-is since it’s a special username that tells PyPI to use an API token instead of the old & deprecated username/password authentication
It should look like this:
poetry config http-basic.pypi __token__ pypi-AgEIc[...]
Now retry publishing:
poetry publish
Example output:
Publishing mypackage (0.1.0) to PyPI
- Uploading mypackage-0.1.0-py3-none-any.whl 100%
- Uploading mypackage-0.1.0.tar.gz 100%