Pythonのsetup.pyファイルの作成とカスタマイズの全て

Pythonのプロジェクトをパッケージとして配布する際には、`setup.py`ファイルが中心となる役割を果たします。この記事では、`setup.py`の基本的な作成方法から、より高度なカスタマイズ方法までを詳細に解説します。具体的なコード例とその解説、応用例を含めています。

目次

setup.pyの基本概念

`setup.py`は、Pythonプロジェクトの構成や依存関係、スクリプトの実行方法などを定義するスクリプトファイルです。このファイルは、Pythonの標準ライブラリである`setuptools`によって読み込まれ、プロジェクトのビルド、インストール、配布が行われます。

最小限のsetup.py

最もシンプルな`setup.py`の例を以下に示します。

from setuptools import setup

setup(
    name='my_package',
    version='0.1',
    description='A sample Python package'
)

この最小限の例では、パッケージ名(`name`)、バージョン(`version`)、および短い説明(`description`)を指定しています。

主要なフィールドとオプション

基本フィールド

`sCode`
from setuptools import setup, find_packages

setup(
name=’my_package’,
version=’0.1′,
packages=find_packages(),
install_requires=[
‘numpy’,
‘pandas’
],
entry_points={
‘console_scripts’: [
‘my_command = my_package.module:function’
]
}
)
`eCode`

– `name`: パッケージの名前。
– `version`: パッケージのバージョン。
– `packages`: プロジェクト内のパッケージ。
– `install_requires`: 依存する外部パッケージ。
– `entry_points`: 実行可能なコマンド。

その他のフィールドとオプション

– `author`: 作成者の名前。
– `email`: 作成者のメール。
– `url`: プロジェクトのホームページ。
– `long_description`: 長い説明文。

高度なカスタマイズ

setup.pyはPythonのスクリプトなので、if文や関数を使用した高度なカスタマイズが可能です。

動的なバージョン指定

import os

version = os.environ.get('PACKAGE_VERSION', '0.1dev')

setup(
    name='my_package',
    version=version,
    # ...
)

独自コマンドの追加

from setuptools import setup, Command

class MyCommand(Command):
    # 独自コマンドの定義

setup(
    # ...
    cmdclass={
        'my_command': MyCommand,
    }
)

応用例

データファイルの含め方

setup(
    # ...
    package_data={
        'my_package': ['data/*.dat'],
    }
)

テストの自動実行

setup(
    # ...
    setup_requires=['pytest-runner'],
    tests_require=['pytest'],
)

まとめ

この記事では、`setup.py`の基本から応用までを網羅的に解説しました。Pythonのパッケージ開発においてこの`setup.py`は非常に重要なファイルですので、しっかりと理解して活用してください。

コメント

コメントする

目次