today::エンジニアに憧れる非エンジニア

今のところは、エンジニアとは言えないところの職種です。しかしエンジニア的なものの考え方に興味津津。

Pythonあれこれ 2021-02-05 - 自作モジュールをsite-packagesに追加するまで

概要

「Head First Python 第2版」を進めていった中で考えたことの記録です。

Head First Python 第2版 ―頭とからだで覚えるPythonの基本

Head First Python 第2版 ―頭とからだで覚えるPythonの基本

  • 作者:Paul Barry
  • 発売日: 2018/03/24
  • メディア: 単行本(ソフトカバー)

自作モジュールをsite-packagesに追加する手順

  1. 配布ファイルの説明を作成する
  2. 配布ファイルを作成する
  3. 配布ファイルをインストールする

配布ファイルあれこれ

  • 配布ファイルの説明について
    • 配布ファイル(及びモジュール)と同じディレクトリに、README.txtという名前のテキストファイルとして作成する
    • 内容そのものは不問
      • 内容が空であっても構わない
  • 配布ファイルについて
    • 実体は単一のアーカイブファイルである
    • 以下のファイルが含まれる
      • モジュールのコード
      • 自身の説明
      • モジュールのインストールにあたり、Pythonインタプリタが必要とするファイル
  • 配布ファイルのインストールについて
    • pipコマンドで行う

setup.pyを作成する

from setuptools import setup

setup(
    name='vsearch',
    version='1.0',
    description='The Head First Python Search Tools',
    author='Head First Python 2e',
    author_email='hfpy2e@gmail.com',
    url='headfirstlabs.com',
    py_modules=['vsearch'],
)

setup.pyの内容の一例(Head First Python 第2版 本誌より)。ポイント説明は以下。

  • 標準モジュールsetuptoolsから、setup関数をインポートする必要がある
  • 配布パッケージに関する各種情報は、setuptools.setup関数のキーワード引数として与える

setuptools.setupのキーワード引数の説明は以下。

  • name
    • パッケージの名前
  • version
    • パッケージのバージョン
  • description
    • パッケージの説明
  • author
    • パッケージの作成者
  • author_email
    • パッケージ作成者の連絡先メールアドレス
  • url
    • パッケージの公式情報が記載されたリソースのURL
    • GitHubのプロジェクトページなどのURLを記入する
  • py_modules
    • 公開するモジュールのファイル名
    • 引数値はリストであるため、複数のファイル名を指定することもできる

setuptools.setupコマンドの引数の説明にあたっての参考情報。ありがとうございます。

buildersbox.corp-sansan.com

実際にモジュールをsite-packagesに入れる

配布パッケージを生成する

C:\Users\Head First\mymodules> py -3 setup.py sdist
  • py -3 setup.pyコマンドは、setup.pyが所在するディレクトリにて実行する
  • sdistは、「現在のプラットフォームにおけるデフォルトのアーカイブ形式で配布パッケージを生成する」というキーワード
    • Windowsの場合はZIP形式(.zip)がデフォルト
    • 各種Unixの場合はgzipで圧縮されたtar(.tar.gz)ファイル形式がデフォルト

docs.python.org

C:\Users\Head First\mymodules> py -3 setup.py sdist
running sdist
running egg_info
    ...
creating vsearch-1.0
creating vsearch-1.0\vsearch.egg-info
    ...
creating dist
Creating tar archive
removing 'vsearch-1.0' (and everything under it)

↑私の環境におけるsetup.pyの実行結果

C:\Users\Head First\mymodulesというパスでvsearch-1.0という配布パッケージを作成した場合、配布ファイルの本体は以下の圧縮tarアーカイブとなる。
C:\Users\Head First\mymodules\dist\vsearch-1.0.tar.gz

作成した配布パッケージをsite-packagesにインストールする

C:\Users\Head First\mymodules\dist> py -3 -m pip install .\vsearch-1.0.tar.gz
Processing c:\users\rapidliner\desktop\mymodules\dist\vsearch-1.0.tar.gz
Using legacy 'setup.py install' for vsearch, since package 'wheel' is not installed.
Installing collected packages: vsearch
    Running setup.py install for vsearch ... done
Successfully installed vsearch-1.0
  • 既存の配布ファイルをsite-packageにインストールするには、pipコマンドを使用する
  • "Successfully installed (パッケージ名)"というメッセージが出れば、パッケージのインストールは成功