🧮

オリジナルのPythonパッケージを作成してGitHubからpipインストール可能にする方法

2024/10/13に公開

はじめに

こんにちは!今回は、Pythonで自分だけのオリジナルパッケージを作成し、それをGitHubに公開してpipを使ってインストール可能にする方法を解説します。

専門的な知識がなくても理解できるように、シンプルな例を使ってステップバイステップで説明します。最終的には、自分のパッケージを他のプロジェクトでも簡単に再利用できるようになります。

この記事の概要

Pythonでは、便利な機能をモジュールやパッケージとしてまとめることで、コードの再利用性を高めることができます。さらに、それらをGitHubなどで公開し、pipを使ってインストール可能にすれば、他の人もあなたのパッケージを簡単に利用できます。

この記事では、簡単な計算機能を提供するパッケージを例に取り上げます。このパッケージは、基本的な四則演算を行う関数を含みます。

実際に自分が作ったパッケージのリポジトリはこちらです。
https://github.com/sousquared/simple_calculator

プロジェクトの概要

  • パッケージ名simple_calculator
  • 機能:基本的な計算機能(足し算、引き算、掛け算、割り算)
  • 目標pipを使ってインストール可能なPythonパッケージを作成し、GitHubから直接インストールできるようにする

GitHubリポジトリの作成

まず、GitHubで新しいリポジトリを作成します。

  1. GitHubにログインし、右上の「+」ボタンをクリックして「New repository」を選択します。
  2. リポジトリ名simple_calculator
  3. 説明(オプション):A simple calculator package for basic arithmetic operations
  4. 公開/非公開設定:Public(公開)を選択します。
  5. READMEの作成:"Add a README file" にチェックを入れます。
  6. 「Create repository」ボタンをクリックしてリポジトリを作成します。

ディレクトリとファイルの構成

ローカル環境で作業を開始します。

# リポジトリをクローン
git clone https://github.com/YourUsername/simple_calculator.git

# ディレクトリに移動
cd simple_calculator

ディレクトリ構成は以下のようになります。

simple_calculator/
├── calculator/
│   ├── __init__.py
│   └── operations.py
├── setup.py
└── README.md

パッケージの作成手順

1. setup.py の作成

setup.py はパッケージのメタデータや依存関係を定義するファイルです。

touch setup.py

setup.py に以下の内容を記述します。

from setuptools import setup, find_packages

setup(
    name='simple_calculator',
    version='0.1.0',
    description='A simple calculator package for basic arithmetic operations',
    author='Your Name',
    author_email='your.email@example.com',
    url='https://github.com/YourUsername/simple_calculator',
    packages=find_packages(),
    python_requires='>=3.6',
)

ポイント

  • name:パッケージ名を指定します。
  • version:バージョン番号です。最初は 0.1.0 とします。
  • description:パッケージの簡単な説明です。
  • author と author_email:あなたの名前とメールアドレスを入力します。
  • url:リポジトリのURLを指定します。
  • packagesfind_packages() を使って自動検出します。

2. __init__.py の作成

Pythonでは、ディレクトリをパッケージとして認識させるために、__init__.py ファイルが必要です。

mkdir calculator
touch calculator/__init__.py

calculator/__init__.py は空のままで大丈夫です。

3. パッケージの実装

calculator/operations.py ファイルを作成し、計算機能を実装します。

touch calculator/operations.py

calculator/operations.py に以下のコードを記述します。

def add(a: float, b: float) -> float:
    """2つの数値を加算します。"""
    return a + b

def subtract(a: float, b: float) -> float:
    """2つの数値を減算します。"""
    return a - b

def multiply(a: float, b: float) -> float:
    """2つの数値を乗算します。"""
    return a * b

def divide(a: float, b: float) -> float:
    """2つの数値を除算します。ゼロ除算の場合はエラーを返します。"""
    if b == 0:
        raise ValueError("Cannot divide by zero.")
    return a / b

4. README.md の作成

README.md ファイルにパッケージの説明と使用方法を記載します。

# simple_calculator

基本的な四則演算を提供するシンプルな計算機パッケージです。

## インストール方法

```bash
pip install git+https://github.com/YourUsername/simple_calculator.git
```

## 使い方
```python
from calculator import operations

result = operations.add(5, 3)
print(result)  # 8
```

リポジトリへのコミットとプッシュ

変更をGitHubリポジトリに反映させます。

# 変更をステージング
git add .

# コミット
git commit -m "Initial commit with calculator package"

# リモートリポジトリにプッシュ
git push origin main

パッケージのインストールと使用方法

仮想環境の作成(推奨)

他のプロジェクトに影響を与えないように、仮想環境を作成します。

# 仮想環境の作成
python -m venv .venv

# 仮想環境の有効化(Mac/Linux)
source .venv/bin/activate

# 仮想環境の有効化(Windows)
.venv\Scripts\activate

パッケージのインストール

pip を使って、GitHubから直接パッケージをインストールします。

pip install git+https://github.com/YourUsername/simple_calculator.git

パッケージの使用

Pythonシェルまたはスクリプトでパッケージを使用します。

from calculator import operations

a = 10
b = 5

print(f"{a} + {b} = {operations.add(a, b)}")        # 10 + 5 = 15
print(f"{a} - {b} = {operations.subtract(a, b)}")   # 10 - 5 = 5
print(f"{a} * {b} = {operations.multiply(a, b)}")   # 10 * 5 = 50
print(f"{a} / {b} = {operations.divide(a, b)}")     # 10 / 5 = 2.0

結果

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
10 / 5 = 2.0

まとめ

お疲れさまでした!これで、自作のPythonパッケージを作成し、GitHubから直接インストール可能にする方法を学ぶことができました。

今回のポイント

  • setup.py を使ってパッケージのメタデータを定義する
  • 必要なファイル(__init__.py や実装ファイル)を正しいディレクトリに配置する
  • GitHubにコードを公開し、pip でインストール可能にする

次のステップ

  • 他の機能をパッケージに追加してみる
  • ユニットテストを追加してコードの品質を向上させる
  • PyPIにパッケージを公開して、さらに多くのユーザーに利用してもらう

ご質問やフィードバックがありましたら、お気軽にコメントしてください。この情報がお役に立てれば幸いです!

Discussion