[解決!Python]pipでローカル環境にあるパッケージをインストールするには解決!Python

自作のパッケージやGitHubなどのリモートリポジトリからクローンしたパッケージをpipコマンドでインストールする方法を紹介する。

» 2023年01月24日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

コマンド 説明
pip install パッケージのディレクトリへのパス ローカル環境にあるパッケージをインストール
pip install -e パッケージのディレクトリへのパス ローカル環境にあるパッケージを編集可能モード(開発モード)でインストール
ローカル環境にあるパッケージのインストール

ローカル環境にあるパッケージをインストール

 自分で何らかのユーティリティーパッケージを開発している場合や、GitHubで公開されているパッケージの開発に参加していてそのソースをローカル環境にクローンしている場合などには、それらローカルなパッケージをpipコマンドで別のプロジェクトにインストールできる。

 ここでは以下のような自作パッケージを開発中であるとして話を進める。

  • パッケージは「mypkgproj」ディレクトリに作成する
  • パッケージ名は「mypackage」とする
  • mypackageパッケージはmodule1.pyファイルとmodule2.pyファイル、__init__.pyファイル、pyproject.tomlファイルで構成される
  • pyproject.tomlファイルにはパッケージ構成が記述される(本稿ではpyproject.tomlファイルにパッケージの構成を記述するものとして、setup.cfgファイルやsetup.pyファイルは含めていない)

 パッケージ構成を記述したpyproject.tomlファイルの内容は次のようになっている。

[build-system]
requires = ['setuptools']
build-backend = 'setuptools.build_meta'

[project]
name = 'mypackage'
version = '0.0.1'



 これはこのパッケージのビルドで使用するビルドシステム、パッケージ名、バージョンなどを記述したものだ。

 module1.pyファイルには以下のようにhello関数だけが定義されている。

def hello():
    print('hello')


 module2.pyファイルにはgoodbye関数だけが定義されている。

def goodbye():
    print('goodbye')


 __init__.pyファイルには2つの関数をインポートして、その名前を変数__all__に設定している。

from . module1 import hello
from . module2 import goodbye

__all__ = ['hello', 'goodbye']


 全体としてのファイル構成は次のようになっている。

パッケージのファイル構成 パッケージのファイル構成

 このパッケージを別のプロジェクト(ここでは「myapp」とする)にインストールするには「pip install パッケージを含むディレクトリへのパス」コマンドを実行する。パッケージを含むディレクトリへのパスとはpyproject.tomlファイル(プロジェクトによってはsetup.cfgファイルやsetup.pyファイル、ライセンスやREADMEを記述したファイルなど)を含むディレクトリのパスとなる。これをここでは「C:\pytips\pytips_0119\mypkgproj」とする(Windows以外の環境の方は適宜読み替えてほしい)。

 これをmyappディレクトリに構築した仮想環境(venvモジュールを使用)にインストールするには、以下のコマンドラインを実行する(実際にはbuildパッケージをインストールして「python -m build」「py -m build」などのコマンドを実行して配布物をビルドするといった手順を行うこともあるだろうj)。

(venv) ……> pip install C:\pytips\pytips_0119\mypkgproj



 実行結果を以下に示す。

インストールが完了した インストールが完了した

 このときには、仮想環境のLib\site-packagesディレクトリ以下にパッケージの内容がコピーされる。以下の画像で「mypackage」の下にmodule1.pyファイルなどがあることを確認してほしい。

インストールしたパッケージはsite-packagesディレクトリ以下にコピーされる インストールしたパッケージはsite-packagesディレクトリ以下にコピーされる

 パッケージが開発中でなければ、これで問題ない。バージョンが上がったら、「pip install パッケージを含むディレクトリへのパス --upgrade」コマンドなどを実行して更新すればよい。

 しかし、活発が頻繁で更新も頻繁であれば、そのたびにpipコマンドでインストールをやり直すのは面倒だ。こうしたときには、パッケージを編集可能モード(開発モード、editableモード)でインストールするとよい。

ローカル環境にあるパッケージを編集可能モード(開発モード)でインストール

 編集可能モードでローカルのパッケージをインストールするには、「-e」オプションを付加して「pip install -e パッケージを含むディレクトリへのパス」コマンドを実行すればよい。

 以下は本稿で例としているパッケージを編集可能モードでインストールしたものだ。

編集可能モードでパッケージをインストール 編集可能モードでパッケージをインストール

 インストール後に「pip list」コマンドを実行すると、編集可能モードでインストールしたパッケージについてはソースコードがどこにあるかも表示される。また、「-e」オプションなしでインストールした場合と異なり、Lib\site-packagesディレクトリにパッケージの内容がコピーされることもない。

編集可能モードでインストールしたパッケージはLib\site-packagesディレクトリに内容がコピーされない 編集可能モードでインストールしたパッケージはLib\site-packagesディレクトリに内容がコピーされない

 編集可能モードでインストールしたパッケージを使用すると、元のプロジェクトが参照されるので、パッケージの機能追加や修正があったときに、それを使用している側でその結果をすぐに適用できる。

 GitHubからクローンしたリポジトリについても同様にしてインストールできるだろう。また、「pip install -e git+https://…….git」のように編集可能モードでGitHubのリポジトリからパッケージをインストールすることも可能だ。この場合には、GitHubからリポジトリの内容がローカルにクローンされ、それを参照するようになる。

「解決!Python」のインデックス

解決!Python

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。