Publishing your first Python package on PyPI is an exciting milestone for any developer. It’s a great way to share your work with the world, contribute to the open-source community, and showcase your skills. In this blog, I’ll walk you through the step-by-step process I followed to publish my package, my_eda_helper
, which simplifies Exploratory Data Analysis (EDA). I’ll also share tips on handling errors, publishing updates, and best practices. Let’s dive in! 🚀
What is my_eda_helper
?
my_eda_helper
is a Python package designed to streamline the EDA process. It provides helper functions for tasks like:
✅ Missing data analysis
✅ Correlation heatmaps
✅ Hypothesis testing
✅ Interactive visualizations
The goal is to reduce repetitive tasks and allow users to focus on deriving insights rather than writing boilerplate code.
Step-by-Step Guide to Publishing a Python Package
1. Plan Your Package
Before writing any code, plan what your package will do. For my_eda_helper
, I wanted to automate common EDA tasks and make them reusable.
2. Organize Your Project Structure
A well-structured project is crucial for maintainability. Your project should have the following structure:
my_eda_helper/ <-- Root folder
├── my_eda_helper/ <-- Package folder
│ ├── __init__.py <-- Makes it a package
│ └── core.py <-- Main code
├── setup.py <-- Package metadata
├── README.md <-- Documentation
├── LICENSE <-- License file
└── tests/ <-- Optional: Tests
📌 Explanation:
-
__init__.py
: Marks the folder as a Python package. Addfrom .core import *
to expose functions. -
core.py
: Contains the main code (e.g., functions for EDA). -
setup.py
: Defines package metadata and dependencies. -
README.md
: Provides installation and usage instructions. -
LICENSE
: Defines the package license. -
tests/
: (Optional) Contains unit tests for your package.
3. Write setup.py
The setup.py
file is crucial for packaging your project. Here’s what mine looks like:
from setuptools import setup, find_packages
setup(
name="my_eda_helper",
version="0.1.0", # Start with 0.1.0 for the first release
author="Your Name",
author_email="your.email@example.com",
description="A helper package for Exploratory Data Analysis (EDA)",
long_description=open("README.md").read(),
long_description_content_type="text/markdown",
url="https://github.com/shemanto27/eda-helper-py",
packages=find_packages(),
install_requires=[
"numpy",
"pandas",
"seaborn",
"matplotlib",
"scipy",
"statsmodels",
"scikit-learn",
"wordcloud",
"IPython",
],
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires=">=3.6",
)
📌 Why?
This file tells PyPI how to install and use your package.
4. Write a README.md
Your README.md
should include:
- A short description
- Installation instructions
- Usage examples
Here’s a snippet from mine:
# My EDA Helper
A Python package to simplify Exploratory Data Analysis (EDA).
## Installation
bash
pip install my_eda_helper
## Usage
python
import my_eda_helper as eda
Missing data analysis
missing_data = eda.missing_info(df)
print(missing_data)
5. Build Your Package
Before uploading to PyPI, build your package:
pip install build
python -m build
This creates a dist/
folder containing .tar.gz
and .whl
files.
6. Upload to PyPI
Step 1: Create a PyPI Account
Sign up at pypi.org.
Step 2: Generate an API Token
- Go to Account Settings > API Tokens
- Create a new token
Step 3: Upload Your Package
pip install twine
python -m twine upload dist/*
- Use
__token__
as the username. - Paste your API token as the password.
✅ Your package is now live on PyPI! 🎉
7. Test Your Package
To confirm the installation works, install and import it:
pip install my_eda_helper
python -c "import my_eda_helper; print(dir(my_eda_helper))"
Handling Errors and Publishing Updates
Common Errors
❌ Package Not Found:
- Ensure the package name is unique on PyPI.
- Double-check the
name
field insetup.py
.
❌ Missing Files:
- Ensure all necessary files (
__init__.py
,core.py
,README.md
) are included.
❌ Version Conflict:
- Increment the version number in
setup.py
before uploading a new version.
Publishing a New Version
If you want to update your package:
1️⃣ Update the version number in setup.py
(e.g., 0.1.1
).
2️⃣ Rebuild the package:
python -m build
3️⃣ Upload the new version:
python -m twine upload dist/*
✅ Done! Your new version is live.
Final Thoughts
Publishing a Python package is a rewarding experience. Whether it’s a small utility or a full-fledged library, your work can help others and grow your skills.
If you found this guide helpful, follow me for more tips and projects:
🔗 LinkedIn: https://www.linkedin.com/in/shemanto/
🐍 GitHub: http://github.com/shemanto27/
Happy coding! 🚀
Top comments (0)