|
1.setup.pyにまとめる利点など
pythonスクリプトをsetup.pyの配布物として作成すると、配布物でのインストール時に標準モジュール以外の
外部モジュールも自動的にインストールされるので便利。OSなどの環境に依存せず、pythonの環境さえあれば再現
できるので管理にも便利。 | |
|
2.pythonの仮想環境
setup.pyの作成に必須ではないが、pythonの素の環境で作成する方が動作確認がしやすい。 (1)pythonの仮想環境の構築と運用
・前提
<dirname>:作業ディレクトリ
.venv:<dirname>内に作成される仮想環境用ディレクトリ名(.venv以外でもよい)
<prompt>:仮想環境に入ったときのプロンプト(--prompt以降は任意)
・仮想環境の構築
cd <dirname>
python3 -m venv .venv --prompt <prompt>
・仮想環境への投入
cd <dirname>
source .venv/bin/activate
・仮想環境からの離脱
deactivate
・仮想環境の削除
.venvディレクトリを削除
・仮想環境の初期化
python -m venv --clear .venv --prompt <prompt>
一旦削除して再構築しているだけなので必要なら--prompt情報も入れる。
(2)作成したパッケージの仮想環境へのインストール(仮想環境モードで)
pip install .
-> カレントディレクトリのsetup.pyの内容で仮想環境にインストールされる
setup.pyの確認をする場合はこちらの方法で。
pip install -e .
-> パッケージ用のディレクトリをそのままpythonに認識させるだけで仮想環境には
インストールされない。そのため、setup.pyの記述に間違いがあってもわからない。
(3)インストールされたパッケージの所在の確認
pip show <packagename>
※ただし、pip3 install -e . でインストールするとLocationに現在の
プロジェクトフォルダのあるディレクトリが表示される。
(4)インストールされたパッケージの一覧
pip list
(5)仮想環境に関する注意点
異なるPC間の仮想環境用ディレクトリやegg-infoディレクトリを混在させないこと。混在により
仮想環境に異常が発生した場合は、仮想環境やegg-infoディレクトリを一旦削除して仮想環境を
再構築すること。
| |
3.setup.pyに関する基礎知識
(1)2つのパッケージングツール
distutils:パッケージングに関する初期ツールだが、現在でも各種ツールのコアとして活用されている。python標準
setuptools:distutilsの改良版。python非標準
(2)配布形式
bdist …… Built Distribution: ビルド済み配布物
(作成コマンド:python setup.py bdist)
sdist …… Source Distribution: ソースコード配布物
(作成コマンド:python setup.py sdist)
python setup.py sdist --formats=gztar,zip等で複数の形式で出力できる。
--format=に出力する形式を所定の文字列で列挙する。
指定しない場合はプラットフォーム依存の形式になる。(linuxなら.tar.gz、windowsならzip)
sdist形式の配布物からのインストール方法:
sdistで出力されたファイル:<package>.tar.gz or <package>.zipとすると
解凍せずそのまま、pip install <sdistで出力されたファイル>
(3)bdist形式の標準
setuptoolsでは当初egg形式であったが現在はwheel形式になりダウンロードした配布物を
そのままインストールすればよくなった。
(4)sdist形式の標準
pyproject.toml:ビルドに必要な依存関係を定義(ビルドに必要な依存関係はビルド用の環境に
インストールされるので現在の環境には影響しない。)
※pyproject.tomlがなければsetuptoolsでsetup.pyが利用される。
(5)配布ファイルの推奨
sdist形式とwheel形式で配布すべき。
| |
|
4.必要十分なsetup.pyの書き方
ただし、モジュールではなくアプリケーション配布の場合に限定。
■サンプルのsetup.pyのディレクトリ構成 <projectdir> ├ <sampleapp> パッケージディレクトリ │ ├ __init__.py │ ├ sampleapp_main.py メインスクリプト │ ├ suport.py メインスクリプトからimportされるスクリプト │ ├ sampleimage.jpg メインスクリプトで利用する画像ファイル │ └ sampledata.dat メインスクリプトで利用するデータファイル ├ <tests> 空ディレクトリ ├ README.md └ setup.py (内容は以下のとおり)以下、setup.pyの中身(赤字)とメモ ============================================ここから
|