How to Publish Your Own Python Package to PyPI (Python Package Index)
Publishing your own Python package to PyPI allows others to easily install and use your project with a simple command like:
pip install your_package_name
Steps to Publish Your Python Package
1. Project Folder Structure
Organize your package like this:
my_package/
│
├─ my_package/ # Package folder
│ ├─ __init__.py # Package initialization
│ └─ math_utils.py # Your module
│
├─ setup.py # Package metadata
└─ README.md # Project description
2. Write Your Code
In my_package/math_utils.py, add your code:
def add(a, b):
return a + b
def subtract(a, b):
return a - b
3. Create __init__.py
This makes your folder a Python package:
# my_package/__init__.py
from .math_utils import add, subtract
4. Write setup.py
This file contains metadata about your package:
from setuptools import setup, find_packages
setup(
name="my_package", # Package Name
version="0.1.0", # Package Version
author="Your Name",
author_email="your_email@example.com",
description="A simple math package",
long_description=open("README.md").read(),
long_description_content_type="text/markdown",
packages=find_packages(),
install_requires=[], # List dependencies here
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.6',
)
5. Create README.md
Write a description of your package:
# My Package
A simple Python package for math operations.
## Install
```bash
pip install my_package
Usage
from my_package import add
print(add(2, 3))
---
### 6. **Build Your Package**
Install **build** tools:
```bash
pip install build
Then run:
python -m build
This will generate:
dist/
├─ my_package-0.1.0.tar.gz
└─ my_package-0.1.0-py3-none-any.whl
7. Upload to PyPI
Install twine:
pip install twine
Upload your package:
twine upload dist/*
It will prompt for your PyPI username and password.
Now anyone can install your package with:
pip install my_package
Bonus Tip
Test your package on TestPyPI before uploading to the real PyPI:
twine upload --repository testpypi dist/*
Test it with:
pip install --index-url https://test.pypi.org/simple/ my_package
Conclusion
| Step | Tool | Command |
|---|---|---|
| Build | build |
python -m build |
| Upload | twine |
twine upload |
| Test Upload | twine |
twine upload --repository testpypi |
| Install | pip |
pip install your_package |
Comments
Post a Comment