7
votes

I'm trying to upload my package to PyPi and came up with this error:

  Traceback (most recent call last):
  File "setup.py", line 11, in <module>
    author_email= #my email,
  File "C:\Programming\Python\Anaconda\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "C:\Programming\Python\Anaconda\lib\distutils\dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "C:\Programming\Python\Anaconda\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "C:\Programming\Python\Anaconda\lib\distutils\command\upload.py", line 63, in run
    self.upload_file(command, pyversion, filename)
  File "C:\Programming\Python\Anaconda\lib\distutils\command\upload.py", line 73, in upload_file
    raise AssertionError("unsupported schema " + schema)

Since python setup.py register -r pypitest is no longer needed to upload the package, I run this command: python setup.py sdist upload -r pypitest, and the error comes in after I type in my password for pypitest

Here is how my setup.py and .pypirc files looks like.

setup.py

from setuptools import setup

setup(
      name='instapi',
      packages=['instapi'],
      version='0.1',
      description='Clean and simple Instagram API for Python 3.x',
      url='https://github.com/SemptraStar/instapi',
      download_url = 'https://github.com/SemptraStar/instapi/archive/v._0.1.tar.gz',
      author= #me,
      author_email= #also me,
)

.pypirc

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username= # username
password= # password

[pypitest]
repository=https://testpypi.python.org/pypi
username= # username
password= # password

UPDATE 1

I changed repository URL's to https://upload.pypi.org/legacy/ for pypi and https://test.pypi.org/legacy/ for pypitest. Also updated setuptools for the latest version (36.3.0). Nothing changed.

4

4 Answers

17
votes

Adding .pypirc file also in home directory C:\Users\<username>, except from the root of the project, worked for me.

6
votes

What you need to do is use twine. Make sure the version is 1.8+

  1. Install it via pip install twine
  2. Make sure your .pypirc file has the correct credentials for test.pypi.org because that is a separate database from production pypi.
  3. Build your sdist python setup.py sdist.
  4. Use twine upload --repository pypitest dist/* for your test upload.
  5. Use twine upload --repository pypi dist/* for your production upload.
1
votes

Had the same issue and solved it by specifying where the .pypirc file is located. Per default, it is expected in ~./, but you might want to have it stored in your project.

This issue helped me here: Custom location for .pypirc file

0
votes

I was having some trouble with those before as well, though I can't recall if it's the same exactly issue you are describing. The old URLs should redirect to the new, but PyPi has moved so there's a chance these won't always work.

Try this for pypi server:

https://upload.pypi.org/legacy/

And this one for pypitest:

https://test.pypi.org/legacy/