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`は非常に重要なファイルですので、しっかりと理解して活用してください。
コメント