
Posted on • Edited on • Originally published atgithub.com
Python Checklist: Publishing a package to PyPi
(Originally published onhttps://github.com/prahladyeri/CuratedLists/)
Checklist: Publishing a package to PyPi
- Register an account onPyPi if you don't have one.
Install
setuptools
andtwine
usingpip
if they aren't already. Create asetup.py
in your source folder as follows (check outsetuptools docs for more detailed setup options):# replace:# <your_package> with your actual package name.# <you> with your name.# <your_email> with your public email address.# <your_github_repo_url> with your github project's url.from setuptools import setup, find_packagess = setup( name="<your_package>", version="1.0.0", license="MIT", description="Foo App", url='<your_github_repo_url>", packages=find_packages(), install_requires=[], python_requires = ">= 3.4", author="<you>", author_email="<your_email>", )
Optional: Bump up the version number (and git commit) if this isn't your first release:
git add . && git commit -m "chore: released 1.0.1" && git push
Run
python setup.py sdist
from your source folder to generate a source distribution.Optional: Sign the newly generated package with your
gpg
signature:gpg -a --detach-sign dist/<your-package>-1.0.0.tar.gz
Upload your package using
twine
:twine upload dist/<your-package>-1.0.0.tar.gz -u <your-pypi-username> -p <your-pypi-password>
If you've signed the package, then you may also add the signed .asc file as the argument like this:
twine upload dist/<your-package>-1.0.0.tar.gz dist/<your-package>-1.0.0.tar.gz.asc -u <your-pypi-username> -p <your-pypi-password>
Visithttps://pypi.org/project/your_package to verify that your package has been uploaded.
Run
pip install <your_package>
to verify the package installation using pip package manager.Optional: Tag the commit with the new version number:
git tag "1.0.1"git push --tags
Top comments(5)

- Email
- LocationArgentina, Buenos Aires
- EducationUTN
- WorkDeveloper
- Joined
No no, yoursetup.py
should be empty,use CFG.

- Email
- LocationIndia
- EducationMCA, MA (Econ)
- PronounsHe/Him
- WorkProgrammer at Freelance
- Joined
Thetwine project is considering to add a--dry-run
mode or a staging server but I don't think that has materialized yet.

- Email
- LocationIndia
- EducationMCA, MA (Econ)
- PronounsHe/Him
- WorkProgrammer at Freelance
- Joined
Sure, just skip everything from point number 5. Instead, just install your locally generated package (*.tar.gz) using pip!
pip install <your-package>-1.0.0.tar.gz
You can even publish this package as a binary setup file on github or just email it to your friends to keep it local.
For further actions, you may consider blocking this person and/orreporting abuse