DEV Community

Bidut Sharkar Shemanto
Bidut Sharkar Shemanto

Posted on

How to Build and Publish a Python Package on PyPI: My Experience with `my_eda_helper`

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
Enter fullscreen mode Exit fullscreen mode

📌 Explanation:

  • __init__.py: Marks the folder as a Python package. Add from .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",
)
Enter fullscreen mode Exit fullscreen mode

📌 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
Enter fullscreen mode Exit fullscreen mode


bash
pip install my_eda_helper


## Usage
Enter fullscreen mode Exit fullscreen mode


python
import my_eda_helper as eda

Missing data analysis

missing_data = eda.missing_info(df)
print(missing_data)

Enter fullscreen mode Exit fullscreen mode

5. Build Your Package

Before uploading to PyPI, build your package:

pip install build
python -m build
Enter fullscreen mode Exit fullscreen mode

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/*
Enter fullscreen mode Exit fullscreen mode
  • 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))"
Enter fullscreen mode Exit fullscreen mode

Handling Errors and Publishing Updates

Common Errors

Package Not Found:

  • Ensure the package name is unique on PyPI.
  • Double-check the name field in setup.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
Enter fullscreen mode Exit fullscreen mode

3️⃣ Upload the new version:

python -m twine upload dist/*
Enter fullscreen mode Exit fullscreen mode

✅ 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)