How to use PyPi to distribute Python packages

Related: Replace with pyproject.toml

Minimal PyPi

  1. assuming your package is named myprogram, have a directory structure like
  2. A minimal for PyPi contains something like:
    #!/usr/bin/env python
    from setuptools import setup, find_packages
       version = '0.1.0',
       description='My program is 2x faster and 1/3 the size of Hello World.',
       author = 'Author Name',
       url = '',
       'Development Status :: 4 - Beta',
       'Programming Language :: Python',

    Pick from the list of classifiers suitable for your project.

PyPi upload

  1. Sign up for PyPi account. It may take several hours to get the confirmation email.
  2. create ~/.pypirc with the content
    index-servers =
    username=<your pypi username>

    Note that I did NOT save my password for security.

  3. In your Python package directory that you want to upload
    python sdist bdist_wheel upload

Now your package is live to the world on PyPi. Anyone can install it via

python -m pip install myprogram


  • you MUST increment the version number for each release, or PyPi will not let you upload

Error workarounds

error: Upload failed (400): Binary wheel ‘*-cp36-cp36m-linux_x86_64.whl’ has an unsupported platform tag ‘linux_x86_64’.

You can workaround this by not uploading the wheel, just the source code and your users will compile it on their machine.

python sdist upload

Leave a Comment