はじめに
この記事ではパッケージを自作し、それをインストールする手順について学びます。
モジュール・パッケージとは
公式ドキュメントから引用します。
モジュールは Python の定義や文が入ったファイルです。ファイル名はモジュール名に接尾語 .py がついたものになります。
パッケージ (package) は、Python のモジュール名前空間を “ドット付きモジュール名” を使って構造化する手段です。例えば、モジュール名 A.B は、 A というパッケージのサブモジュール B を表します。
つまり、モジュールは単一のPythonファイルであり、それをまとめたものがパッケージとなります。
まずは、パッケージを自作していきましょう。
パッケージの作成
今回のワークスペースディレクトリを作成します。
ここではsandbox
と命名しましょう。
sandbox
以下にパッケージを作成していきます。
先述の通り、パッケージはモジュールをまとめたものですので、ディレクトリとなります。
sandbox
以下にパッケージ名のディレクトリを作成します。
ここではmy_package
と命名しましょう。
1 | sandbox/ |
続いてmy_package
以下に__init__.py
を作成します。
今回は最低限の構成とするため、空のテキストファイルとして作成します。
1 | sandbox/ |
続いて、モジュールを作成します。
ここではmy_module.py
と命名しましょう。
my_module.py
の内容
1 | def my_function(): |
1 | sandbox/ |
最後に作成したモジュールを呼び出すスクリプトを作成します。
ここではscript.py
と命名しましょう。
script.py
の内容
1 | from my_package.my_module import my_function |
1 | sandbox/ |
さてスクリプトを実行してみましょう。
1 | python3 script.py |
1 | called my_function |
うまく行きました!
スクリプトを作成しなくても、下記のコマンドで確かめることもできます。
1 | python3 -c 'from my_package.my_module import my_function' |
pipでのインストール
さて、次にpipでのインストールに挑戦してみましょう。
なぜインストールするか
その前に、sandbox
以外のディレクトリに移動し先ほどのコマンドを実行してみましょう。
1 | python3 -c 'from my_package.my_module import my_function' |
下記のようなエラーとなってしまうはずです。
1 | Traceback (most recent call last): |
パスが通っていないため、my_package
のインポートに失敗しているのです。
そこで、どこからでもインポートできるようにpipでのインストールを考えたくなるのです。
仮想環境の設定
pipコマンドでインストールをしてしまうので、今の環境を壊さないために仮想環境を用いましょう。
どのような方法でも良いですがここではvenv
を使います。
sandbox
ディレクトリに移動し
1 | python3 -m venv venv |
としてください。venv
ディレクトリが作成されます。
以下のコマンドで仮想環境のアクティベイトができ
1 | . /venv/bin/activate |
以下のコマンドで仮想環境のディアクティベイトができます。
1 | deactivate |
手順
sandbox
以下にsetup.py
を作成します。
そして以下のように記述します。
1 | from setuptools import setup, find_packages |
1 | sandbox/ |
これで準備は完了です。
忘れずに仮想環境をactivate
した後、sandbox
以下で
1 | pip install -e . |
とすればパッケージのインストールができます。
今度はディレクトリを変えても
1 | python3 -c 'from my_package.my_module import my_function' |
が正常に動作します。
記事情報
- 投稿日:2020年4月11日
- 最終更新日:2020年4月11日