How To Upload PyGamma Wheels
This document describes how to upload PyGamma wheels to PyPI.
Note. Once you load a version to PyPI, the same version can NOT be reloaded. So be careful.
*Just FYI - One workaround is to upload ‘release candidate' versions, e.g. if you upload 1.2.15rc1 initially you can still upload 1.2.15 later. *
As of this writing (March 2021), uploading wheels requires some help from 3rd party packages. See the "One-time Setup Steps" section below if you have not already set these packages up, yet.
If you find these steps to be too much trouble, remember that you can always upload the wheel files to scion instead. That would create a small inconvenience for the user.
If the PyGamma wheels are on PyPI, the user can type
pip install pygamma and pip will find and install the right version of PyGamma for the user's system.
If the PyGamma wheels are on not PyPI, the user will have to download the correct wheel file for their system and then run
pip install pygamma-xxxxx.whl.
Some of the information in this document comes from here: https://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/
This document assumes the following –
- You have already built the PyGamma wheels
- You have an account on the test PyPI
- You have an account on the production (real) PyPI
- You have followed the one-time setup steps in this document (see below)
Uploading Wheels to Test PyPI
Upload to the test PyPI if you want, type:
twine upload --repository testpypi dist/*
You can find this upload at https://test.pypi.org/project/pygamma/
To use this test version to upgrade your version of PyGamma, type:
pip install --index-url https://test.pypi.org/simple pygamma --upgrade
Uploading Wheels to PyPI (production)
When you feel ready, upload to the production PyPI, type:
twine upload dist/*
You can find this upload at https://pypi.python.org/pypi/pygamma
It's perfectly OK to upload just one file, e.g.
twine upload dist/pygamma-4.3.3-cp27-cp27mu-manylinux1_i686.whl
twine isn't in your
PATH, try using
python -m twine instead of just
If you change any of the metadata in
setup.py (e.g. the description, maintainer email, etc.), you'll need to rerun the
setup.py register step for that information to appear on PyPI.
The metadata is stored in the
PyGamma.egg-info directory that's a sibling of
setup.py. In my experience it gets overwritten when one runs the
setup.py register step. If you're feeling paranoid, you might want to delete that directory by hand after a metadata change.
If this does not work, then doing a full twine upload will also update any metadata. You can use a throw-away version number like 0.9.dev10 to test this on TestPyPI.
One-time Setup Steps
These are steps that only need to be done once, not every time you upload a wheel.
Because Python tools are not where they need to be yet, we need to rely on a 3rd party package called twine. Install it like so –
pip install twine
Create the PyPI Config File
Create the file
.pypirc in your home directory and populate it with the text below, replacing the stuff in
[distutils] index-servers= pypi testpypi [testpypi] repository = https://test.pypi.org/legacy username = <your test user name goes here> [pypi] repository = https://upload.pypi.org/legacy username = <your production user name goes here>
You can also include your password in that file, but that means your password will be stored in plain text on your hard drive. I cannot recommend this.
If you don't put your password in .pypirc, you'll be prompted for it when you run
setup.py register or use
twine to upload wheels.
Register the Project
Register on the test PyPI first:
python setup.py register -r test
If that goes well, you can register on the production (real) PyPI:
python setup.py register }}}