MRが楽しい

MRやVRについて学習したことを書き残す

Pythonの自作モジュールを作成してPythonにインストールする その1(Pythonスクリプトのモジュール)

本日は Python の技術調査枠です。
Python で自作モジュールを作成してPythonにインストールする手順を記事にします。
f:id:bluebirdofoz:20191123093954j:plain

setup.py

setup.py は一般的に Python のモジュール定義を記述するスクリプトに利用されるファイル名です。
モジュールの各種設定を本スクリプトファイルに定義し、インストールの際に実行します。
インストールの定義は setup() 関数で定義します。

Pythonスクリプトで書いたモジュールの作成

インストールを行うモジュールとして、以下の Python スクリプトを作成しました。
"Hello World"を標準出力する関数と、数値の引数を受け取り足し算結果を返す関数を定義します。
・hello.py

# 標準出力テスト
def printstr():
    # "hello world"を出力
    print("hello world")
    return

# 引数戻り値テスト
def sumarg(arg_x=0, arg_y=0):
    # 引数を足し算して返却する
    return arg_x + arg_y

上記のスクリプトを登録する際は以下のような setup.py を用意します。
・setup.py

from setuptools import setup

setup(
    name="hello",                 # モジュールの名前
    version="1.0.0",              # モジュールのバージョン
    author="holomon",             # モジュールの作者
    url="",                       # モジュールのホームページ
    description="description",    # モジュールの説明(help(hello)で確認可能)
    install_requires=[],          # 依存パッケージ([pip install -e .]実行時に一緒にインストール)
    extras_require={
        "develop" : [],           # 拡張依存パッケージ([pip install -e . develop]実行時に一緒にインストール)
    }
)

モジュールの名前は対象スクリプトのファイル名から .py を除いた部分です。
今回は hello.py を対象とするので hello がモジュールの名前となります。

インストールの実行

作成した setup.py と hello.py を同じディレクトリに配置します。
f:id:bluebirdofoz:20191123094020j:plain

今回はテストのため、インストールを行う Python を直接指定します。
例えば以下のパスの Python.exe を利用して setup.py を実行した場合、実行した Python ディレクトリにモジュールがインストールされます。

D:\Python\SetupPythonTest\Python37\python.exe

setup.py を配置したディレクトリで、Shiftキー+右クリックから[PowerShellウィンドウをここで開く]を実行します。
f:id:bluebirdofoz:20191123094030j:plain

PowerShell が起動したら、以下のコマンドを実行して hello.py をインストールします。

python .\setup.py install

f:id:bluebirdofoz:20191123094041j:plain

成功すると、実行した Python ディレクトリの以下のパスに hello-(バージョン)-(ビルド環境).egg ファイルが追加されます。
初めて install を実施した際は、追加モジュールへのパスを示す easy-install.pth も追加されています。

(Pythonディレクトリ)\Lib\site-packages

f:id:bluebirdofoz:20191123094050j:plain

easy-install.pth には以下のようなモジュールへのパスが追加されています。

./hello-1.0.0-py3.7.egg

モジュールの実行確認

python を起動して以下のコマンドを実行します。

import hello
print(hello)

インストールしたモジュールへのパスが表示されればインストールは成功しています。
f:id:bluebirdofoz:20191123094058j:plain

続けて以下の通り、関数を実行してみます。

hello.printstr()
hello.sumarg(1,3)

それぞれ"Hello World"の出力と、足し算の結果が出力されれば成功です。
f:id:bluebirdofoz:20191123094106j:plain

次回はC言語を使って拡張モジュール関数を作成してみます。
bluebirdofoz.hatenablog.com

参考ページ

公式のマニュアルは以下のページ。
packaging.python.org

qiita.com
qiita.com
qiita.com