1
votes

403 Client Error: Invalid or non-existent authentication information occurs when uploading new module to pypi with Twine

Win10 Pro 1803 Biuld 17134.1069 64 bit // Python 3.7.5 32 bit // pip 19.3.1

I successfully created tar. and whl. in the dist folder, registered on https://pypi.org/ with e-mail confirmation and started to upload.

I checked both files with command line ('PASSED')

and did the following:

Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: gakonorde
Enter your password:
Uploading gersyll-Alpha.release-py3-none-any.whl
100%|█████████████████████████████████████████████████████████████████████████████| 6.43k/6.43k [00:01<00:00, 5.12kB/s]
NOTE: Try --verbose to see response content.
HTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/

The command line does not allow me to enter password after username. I only can press ENTER.

I tried also

Password for 'your-username' in 'https://upload.pypi.org/legacy/':

... and again, I can press nothing except of ENTER.

Then I created .pypirc file with credentials for https://pypi.org/ and its test version and run python -m twine upload dist/* again

I was not asked for a password, but got the same error:

Uploading distributions to https://upload.pypi.org/legacy/
Uploading gersyll-Alpha.release-py3-none-any.whl
100%|█████████████████████████████████████████████████████████████████████████████| 6.43k/6.43k [00:01<00:00, 5.46kB/s]
NOTE: Try --verbose to see response content.
HTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/

When I combine .pypirc with API token, the problem remains the same.

I can enter my account on https://pypi.org/, so it obviously exists (and e-mail is verified).

I also added the second e-mail, verified and set it as primary (nothing changed).

Here is my setup.py:

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="gersyll",
    version="Alpha release",
    author="gakonorde",
    author_email="[email protected]",
    description="This module counts the number of words of different syllable length for all texts in a directory",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/gakonorde/gersyll",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3.7",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.7',
)

What am I doing wrong?

Any help would be greatly appreciated.

Edit: The .pypirc file is in the same folder as .setup, README, License, dict/ etc.

It's content is as follows:

[distutils]
index-servers =
  pypi
  pypitest

[pypitest]
repository: testpypi.python.org/pypi
username: gakonorde 
password: [my_password]

[pypi]
repository: upload.pypi.org/legacy
username: gakonorde
password: [my_password]
2
You won't see any input after the Enter your password: prompt, because it's hiding your password. Where did you put your .pypirc file? Can you share the contents (with your password redacted)?Dustin Ingram
The .pypirc file is in the same folder as .setup, README, License, dict/ etc. It's content is as follows: ``` [distutils] index-servers = pypi pypitest [pypitest] repository: testpypi.python.org/pypi username: gakonorde password: [my_password] [pypi] repository: upload.pypi.org/legacy username: gakonorde password: [my_password] ``` (In my case, for main and text versions of Pypi the account names are the same, and sorry for formatting the code here - I'm new to Stackoverflow)Gavrk
I've edited your question, in the future you can add updates and clarifications there instead.Dustin Ingram

2 Answers

2
votes

With regards to the password prompt, you won't see any input after the Enter your password: prompt, because it's hiding your password.

For your .pypirc file, this should be in your home directory (~/.pypirc), not in the same directory as your setup.py file.

2
votes

Solved with

python -m twine upload -u USERNAME -p PASSWORD dist/*