

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
setup.py・とは?初心者でも分かる使い方と基礎ガイド
このページでは setup.py が何なのか、なぜ必要なのかを丁寧に解説します。Python の世界には「パッケージ」という考え方があり、パッケージを配布したり導入したりするときに setup.py が重要な役割を果たします。コードを書くだけではなく、公開する側の準備も学べるので、将来のプロジェクトに役立ちます。
setup.pyとは何か
setup.py は、パッケージに関する情報をまとめた「指示書」のようなファイルです。主に setuptools というライブラリと組み合わせて使います。かつては distutils が使われていましたが、現代では setuptools が主流です。
主な役割と仕組み
setup.py の中には setup() という関数を呼ぶコードがあります。ここにパッケージの名前やバージョン、説明、含まれるファイル、依存関係などを渡します。実行すると、パッケージを作成したり、配布用のアーカイブを作ったりできます。
基本的な書き方の例
以下は最も基本的な形です。プロジェクトごとに内容は変わります。
from setuptools import setup, find_packages
setup(
name="my_package",
version="0.1.0",
description="サンプルのパッケージ",
packages=find_packages(),
long_description="ここに長めの説明を入れる",
install_requires=[],
)
setup.pyを使ってパッケージを作る手順
1つ目のステップは、setup.py を作成することです。次に、コマンドラインでパッケージの配布物を作成します。一般的には次のようなコマンドを実行します。
python setup.py sdist
このコマンドはソースコードの配布用アーカイブを作成します。パッケージを wheel 形式で作る場合は次のコマンドを使います。
python setup.py bdist_wheel
ただし現代の開発現場では pyproject.toml の導入が進んでおり、setup.py だけに頼らない方法が増えています。pyproject.toml によってビルドツールを統一的に指定するのが一般的です。学習の初期段階では setup.py の基本を理解しておくと、後で pyproject.toml の仕組みを学ぶときに役立ちます。
setup.pyの基本項目を表で整理
| 項目 | 説明 |
|---|---|
| name | パッケージの名前。配布時の識別子になります。 |
| version | パッケージのバージョン番号。初回は 0.1.0 などがよく使われます。 |
| description | 短い説明。PyPI などで表示される情報の一部です。 |
| packages | 含まれるモジュールの集合。find_packages() を使うと自動で検出してくれます。 |
| install_requires | このパッケージを使うときに必要な他のパッケージのリスト。 |
まとめとポイント
setup.py は Python のパッケージ配布を動かす重要なファイルです。作成の手順や基本的な書き方を理解すると、他の人に自分のコードを公開するときに役立ちます。一方で、最新の開発現場では pyproject.toml の利用が拡大しているため、長期的には 新しい仕組みを学ぶこと が大切です。まずは setup.py の基本構造を覚え、実際に小さなサンプルを作って動かしてみましょう。
setup.pyの同意語
- setup.py ファイル
- Python の setuptools によるパッケージの設定やビルド情報を記述する、名前が setup.py のファイル。
- セットアップスクリプト
- パッケージを構築・配布するためのスクリプトで、一般には setup.py を指す表現。
- setup script
- 英語表現。Python でパッケージの設定とビルド手順を定義するスクリプト。
- セットアップ用スクリプト
- セットアップ作業を実行する Python スクリプト。
- パッケージ設定ファイル
- パッケージの名前、バージョン、依存関係などのメタデータとビルド情報を定義するファイル。
- ビルドスクリプト
- パッケージをビルド(作成)する手順を記述したスクリプト。
- パッケージングスクリプト
- パッケージを配布可能な形にまとめる処理を記述したスクリプト。
- 配布用メタデータファイル
- パッケージの作者、バージョン、説明、著作権などの情報(メタデータ)を定義するファイル。
- メタデータ定義ファイル
- パッケージの基本情報を定義するファイル。
- setuptools 設定ファイル
- setuptools で使う設定を記述するファイル。
- セットアップ設定ファイル
- セットアップの設定項目をまとめたファイル。
- Python パッケージの設定ファイル
- Python パッケージの名称・版・依存関係などの設定を記述するファイル。
setup.pyの対義語・反対語
- teardown.py
- セットアップの逆操作を想定したファイル名。環境のクリーンアップや後片付けを自動化する処理を表します。
- cleanup.py
- セットアップ後の不要ファイルの削除や環境整理を自動化する処理を指します。セットアップの“後始末”を担う反対概念です。
- uninstall.py
- インストール済みパッケージをアンインストールする処理を行うスクリプト。setup.pyが行う“設定・配置”に対して、反対の作業を指します。
- revert_setup.py
- セットアップによって加えられた変更を元に戻す、設定の取り消しを行うスクリプト。設定を“撤回”するイメージです。
- disable_setup.py
- setup機能を無効化する設定・処理を行うスクリプト。セットアップを使わない状態を作る意図の名称です。
- undo_setup.py
- セットアップを取り消す、元に戻す作業を表すファイル名。実質的な反対操作を示します。
- no_setup.py
- setup処理を実行しない状態を表すファイル名。初心者向けには“設定なし”を意味します。
- pyproject.toml
- setup.pyの代替として使われる現代的なパッケージ構成ファイル。PEP 517/518の文脈で、従来の setup.py の反対概念・代替として理解されます。
setup.pyの共起語
- setuptools
- Python のパッケージを作成・配布する際の主要ライブラリ。setup.py の機能を実装し、パッケージ情報や依存関係を定義するのが主な役割です。
- distutils
- 古いビルドツールで、現在は非推奨。setup.py と組み合わせて使われることもありますが、代替として setuptools が一般的です。
- pyproject.toml
- ビルド設定を記述する現代的なファイル。ビルドバックエンドを指定し、構築環境を分離します。setup.py と併用される場面もあります。
- setup.cfg
- setup.py のオプションを静的に記述できる設定ファイル。コードを減らし、設定を分離して管理します。
- wheel
- .whl 形式のバイナリパッケージ。インストールを高速化するために使われます。
- sdist
- ソースディストリビューション。パッケージのソースコードを配布する形式です。
- bdist_wheel
- wheel を作成するビルドコマンド。setup.py から実行することが多いです。
- version
- パッケージのバージョン番号。例: 1.0.0。依存解決やアップデート管理に重要です。
- name
- パッケージの名前。PyPI での識別子として使われ、setup() に必須の情報です。
- description
- パッケージの短い説明。検索時の要約として表示されます。
- long_description
- パッケージの詳しい説明。通常は README から取得して長文を提供します。
- long_description_content_type
- long_description の形式を示します。例: text/markdown。
- author
- 著者名。パッケージの作成者を表します。
- author_email
- 著者のメールアドレス。連絡先情報として使われます。
- license
- ライセンス種別。例: MIT、Apache-2.0。再配布条件を示します。
- classifiers
- PyPI での分類情報。開発言語、ライセンス、用途などを表現します。
- install_requires
- 実行時に必要な依存パッケージのリスト。自動でインストール対象に含まれます。
- extras_require
- 追加機能用の依存をグループ化。例えば dev、test などを定義します。
- packages
- 含めるパッケージのリストまたは find_packages の出力。
- find_packages
- パッケージを自動で検出する関数。setup の packages 指定を簡略化します。
- include_package_data
- MANIFEST.in で指定したデータファイルをパッケージに含めるかどうか。
- package_data
- パッケージ内部に含める任意のデータファイルを定義します。
- data_files
- パッケージ外の追加ファイルをインストール時に配置します。
- scripts
- 古い方法での実行可能スクリプトの指定。現在は console_scripts が推奨です。
- entry_points
- プラグインやコマンドを登録する仕組み。エコシステム拡張に用いられます。
- console_scripts
- コマンドラインで実行するスクリプトを登録します。最も一般的な CLI 配布形態です。
- py_modules
- 単一の .py ファイルをモジュールとして含める場合の設定。
- zip_safe
- ZIP から直接実行可能かどうか。True/False で指定します。
- python_requires
- サポートする Python バージョンを指定します。例: >=3.7。
- README
- 長い説明のソースとして使われることが多いファイル名(README.md など)。
- MANIFEST.in
- sdist に含めたい追加ファイルを指示するファイル。
- license_files
- 同梱するライセンス関連ファイルを指定します。
- build-system
- pyproject.toml のセクション。ビルドバックエンドと依存を定義します。
- project_urls
- パッケージの関連リンクを追加するセクション。
setup.pyの関連用語
- setup.py
- Pythonパッケージのビルド・インストール用スクリプト。setuptoolsを使ってメタデータを定義し、sdistやbdist_wheelの作成、インストール時の挙動を管理します。
- setuptools
- Pythonのパッケージ作成ツール。setup()関数を用いてメタデータや依存関係、ビルドオプションを指定し、パッケージを配布可能な形に組み立てます。
- distutils
- Python標準ライブラリの旧式パッケージ作成ツール。現在は非推奨で、setuptoolsが推奨されます。
- pyproject.toml
- ビルド設定をまとめるファイル。build-systemセクションで利用するビルドバックエンドを指定します。
- setup.cfg
- setup.pyの代わりや補助として、メタデータや設定を静的に記述する設定ファイル。
- MANIFEST.in
- sdist作成時に含める追加ファイルを指定する指示ファイル。データファイルの取り扱いを制御します。
- sdist
- Source distribution。ソースコードと必要なファイルを含んだ配布形式で、プラットフォーム非依存で配布可能。
- bdist_wheel
- Wheel形式のバイナリ配布。事前ビルド済みパッケージでインストールを高速化します。
- wheel
- Wheelファイル(.whl)は公式な配布形式。pipでのインストールが高速・安定します。
- install_requires
- 依存パッケージの列挙。パッケージをインストール時に自動的に解決します。
- extras_require
- 追加の依存関係をカテゴリ別に定義。例: dev、tests、docs など。
- packages
- 含めるPythonパッケージのリスト。自動検出機能でディレクトリツリーを包みに含めます。
- include_package_data
- パッケージにデータファイルを含めるかの設定。MANIFEST.inと連携します。
- package_data
- 特定のパッケージに含めるデータファイルを指定します。
- data_files
- パッケージ外の追加ファイルを配布に含める設定。
- zip_safe
- パッケージをzip化して配布しても安全かどうかを示す設定。
- version
- パッケージのバージョン。PEP 440準拧が推奨。
- name
- パッケージの正式名称。PyPIでの識別子。
- description
- 短いパッケージの説明文。
- long_description
- 長い説明。READMEをそのまま利用することが多いです。
- long_description_content_type
- long_descriptionのマークアップ形式(text/markdown など)。
- python_requires
- サポートするPythonの最低版や範囲を指定(例: >=3.8)。
- classifiers
- パッケージのカテゴリや用途を表すPEP 301準拠の文字列リスト。
- py_modules
- 単一のPythonモジュールファイルを配布する場合に指定。
- entry_points
- コンソールスクリプトやプラグインのエントリポイントを定義。
- console_scripts
- entry_pointsの一部で、コマンド名と実行関数を結びつけ、CLIツールを提供します。
- setup_requires
- setup()実行前に必要なビルド依存を定義。現代では限定的な用途のみ推奨。
- tests_require
- テスト実行時に必要な依存パッケージを列挙。
- build-backend
- ビルドを実行するバックエンド。例: setuptools.build_meta。
- build-system
- pyproject.toml内のセクション。build-backendとrequiresを指定します。
- build_requires
- build-systemのrequiresに列挙されるビルド依存の別表現(一般にはrequiresと同義)。
- PEP 517
- Pythonパッケージのビルド方法を標準化する提案。build-backendの仕様を定義します。
- PEP 518
- ビルド依存をpyproject.tomlで宣言する規格。
- PEP 621
- パッケージのメタデータの標準化仕様。pyproject.tomlでの記述を促します。
- PEP 440
- Pythonパッケージのバージョニング規約。
- PyPI
- Python Package Indexの略。公式のパッケージ配布サイト。
- twine
- PyPIへパッケージをアップロードするためのツール。セキュアな配布を実現します。
- dist-info
- インストール時に作成されるメタデータディレクトリ。METADATA・RECORDなどを含みます。
- EGG-INFO
- 旧形式のメタデータディレクトリ。Eggパッケージの名残。
- PKG-INFO
- パッケージのメタデータファイル名。古い形式のメタデータファイル。
- license
- ライセンス情報。配布時に重要な法的情報。
- license_files
- ライセンスファイルを配布に含める設定。
- keywords
- 検索性を高めるためのキーワード。PyPIのメタデータにも含まれます。



















