Python

【Python】第4章第12回:setup.pyを使ったパッケージ作成

本記事では、Pythonのsetup.pyファイルを用いてパッケージを作成し、公開する方法について解説します。setup.pyを活用することで、独自のモジュールやライブラリを簡単に共有できます。

0. 記事の概要

この記事を読むメリット

  • setup.pyの基本を理解:Pythonパッケージの作成手順を学べます。
  • ライブラリ公開の方法を習得:PyPIにパッケージを公開する方法がわかります。
  • プロジェクト管理スキルの向上:他の開発者と効率的に共有できるツールを構築できます。

この記事で学べること

  • setup.pyの基本的な構造と記述方法
  • Pythonパッケージの作成と公開の手順
  • パッケージ管理のベストプラクティス

1. setup.pyとは?

1.1 定義と役割

setup.pyは、Pythonパッケージの設定ファイルです。パッケージをインストール可能な形式に変換する際に使用されます。

1.2 主な機能

  • パッケージのメタデータ(名前、バージョン、説明など)の定義
  • 依存ライブラリの指定
  • PyPIへのアップロード

2. setup.pyを使ったパッケージ作成の手順

2.1 ディレクトリ構造の作成

# パッケージ構造の例
my_package/
├── my_module.py
├── tests/
│   ├── test_my_module.py
├── setup.py

2.2 setup.pyの記述例

# setup.pyの基本構造
from setuptools import setup, find_packages

setup(
    name="my_package",  # パッケージ名
    version="0.1",  # バージョン
    packages=find_packages(),  # パッケージを自動検出
    install_requires=[  # 依存関係
        "requests",
    ],
    author="Your Name",
    author_email="your.email@example.com",
    description="A sample Python package",
    url="https://github.com/yourusername/my_package",
)
動作解説
  1. setup()関数内で、パッケージ情報を記述します。
  2. find_packages()を使うことで、ディレクトリ構造に基づいてパッケージを自動検出します。
  3. install_requiresで依存ライブラリを指定します。

3. パッケージのビルドと公開

3.1 パッケージのビルド

# パッケージのビルド
python setup.py sdist bdist_wheel

このコマンドで、パッケージを配布可能な形式に変換します。

3.2 PyPIへの公開

# Twineを使ったPyPIへのアップロード
pip install twine
twine upload dist/*

PyPIにパッケージを公開することで、他の開発者が使用できるようになります。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. 「hello_world」という名前のシンプルなパッケージを作成し、setup.pyを記述してください。
  2. パッケージをローカル環境でインストールし、動作確認を行ってください。

5. 練習問題の解答と解説

問1の解答例

# hello_world/setup.py
from setuptools import setup

setup(
    name="hello_world",
    version="0.1",
    py_modules=["hello_world"],
    install_requires=[],
    author="Your Name",
    description="A simple hello world package",
)

問2の解答例

# パッケージをインストール
pip install .

ローカル環境でインストールし、import hello_worldで動作確認を行います。

6. まとめ

setup.pyを使うことで、Pythonパッケージを効率的に作成・公開できます。練習問題を通じて、パッケージ管理スキルを磨きましょう。