site-packagesへのモジュールの追加
今日は、『Head First Python』の4章 "コードの再利用" で学んだことをアウトプットします。
モジュールをsite-packagesに入れる
Pythonでは、コードの再利用においてサードパーティモジュールが重要な役割を果たしています。モジュールを追加する機能がインタプリタに組み込まれているのです。
標準ライブラリに独自のモジュールを追加したり削除したりすることはできませんが、site-packagesへのモジュールの追加や削除は積極的に推奨されています。site-packagesのモジュールや削除を行うツールも用意されています。
「setuptools」を使ってsite-packagesにインストールする
setuptoolsモジュールを使ってsite-packagesにモジュールを追加できます。
①配布ファイルの説明を作成する
setuptoolsでインストールしたいモジュールを決めます。
②配布ファイルを生成する。
コマンドラインで、モジュールのコードを含む共有可能な配布ファイルを作成します。
③配布ファイルをインストールする
再びコマンドラインで、(モジュールを含む)配布ファイルをsite-packagesにインストールします。
手順①には、モジュール用の(少なくとも)2つの説明ファイル(setup.pyとREADME.txt)を使います。
setup.pyの作成
上述の3つの手順によると、最終的にモジュールの配布パッケージを作成することになります。このパッケージは、モジュールをsite-packagesにインストールするのに必要なすべてを含む1つの圧縮ファイルです。
手順①の「配布ファイルの説明を作成する」では、2つのファイルを作成してvsearch.pyファイルと同じフォルダに入れる必要があります。1番目のファイルはsetup.pyという名前にして、モジュールについて詳しく記述します。
from setuptools import setup
setup(
name = 'vsearch',
version = '1.0',
description = 'The Head First Python Search Tools',
author = 'HF Python 2e',
author_email = 'hfpy2e@gmail.com',
url = 'headfirstlabs.com',
py_modules = {'vsearch'},
)
1行目はsetuptoolsモジュールからsetup関数をインポートし、2行目はsetup関数を呼び出します。
setup関数は多数の引数を取りますが、多くは省略可能です。読みやすくするために、setupの呼び出しを9行に分割しています。Pythonがキーワード引数をサポートしていることを利用して、この呼び出しでどの値をどの引数に代入しているかを明確に示しています。
1つ目の引数nameは配布ファイルを指定します。モジュールにちなんで配布ファイルの名前をつけるのが一般的です。
最後の引数py_modulesは配布パッケージに入れる.pyファイルを指定します。
setuptoolsには、setup.pyの他にもう1つのファイル(「README」)が必要です。このファイルには、パッケージについて説明するテキストです。このファイル自体は必要ですが、その内容は入れても入れなくてもいいので、(ここでは)setup.pyファイルと同じフォルダにREADME.txtという空のファイルを作成しておきます。
UNIX系OSで配布ファイルを作成する
setuptoolsが作業しているフォルダには3つのファイル(vsearch.py、setup.py、README.txt)がある状態で、コマンドラインで次の行を入力します。
~/mymodules$ python3 setup.py sdist
処理が完了したら、3つのファイルは1つのソース配布ファイルに結合されています(そのため、上記で引数sdistを使っています)。これはモジュールのソースコードを含むインストール可能なファイルです。この例ではvsearch-1.0.tar.gzという名前です。
新たに作成したアーカイブファイルはdistフォルダにあります。このフォルダも、setuptoolsが作業しているフォルダ(この例ではmymodules)の下に作成されています。
ソース配布ファイルを圧縮tarアーカイブとして作成したら、モジュールをsite-packagesにインストールできる状態になります。
pipによるパッケージのインストール
配布ファイルは(プラットフォームに応じて)ZIPまたはtarアーカイブです。次は手順③「配布ファイルをインストールする」を行います。これは、pip(Package Install for Python)を使います。
UNIX系OSで手順③を行う
UNIX系OSでは、新たに作成したdistフォルダでターミナルを開き、プロンプトで次のコマンドを入力します。
.../dist$ sudo python3 -m pip install vsearch-1.0.tar.gz
これでvsearchモジュールがsite-packagesの一部としてインストールされました。
サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪