🐍

Windows PCでのPipenvによるPython仮想環境構築メモ

2021/01/10に公開

Windows PCでのPipenvによるPython仮想環境構築メモ

Windows PCでpipenvを使った仮想環境構築方法のメモです。

Pythonをインストールする

Python Software Foundation(PSF)からPythonのダウンロードはここから。
Download Python | Python.org

後々さまざまな仮想環境を作成することになりますが、それらで使うバージョン違いのPythonは仮想環境を作成しようとする時点でPCにインストールされている必要があります。
すでに使いたいバージョンが複数あることが判明していればインストールしておいてください。

※別にpyenvというパッケージをインストールしておくことで、必要なバージョンのPythonがインストールされていない場合自動的にダウンロードしてくれる模様(未検証)。

インストーラ起動時のふたつのチェックボックスについては、

  • Install launcher for all users (recommended)
    チェック推奨。プロンプトで py コマンドを使ってPCにインストールされている任意のバージョンのPythonを起動することができるようになる。
  • Add Python x.x to PATH
    チェックすると上記の py コマンドを使わなくてもPythonを起動できるようになるため、以下の説明中の py -m 部分は不要になる。
    ただし、複数バージョンのPythonをPCにインストールする場合はチェックを外した方が無難か。

となります。

また、インストール完了時の Disable path length limit というオプションはWidowsのパス長制限を無効化してくれるため、差し支えなければクリックしてください。

環境変数を追加する

環境変数を必要に応じて設定します。私がやったのは以下の3つです。

変数名 備考
PIPENV_VENV_IN_PROJECT true 仮想環境のデータが格納される .venv がプロジェクトのルートディレクトリに作成されるようになる。
HTTP_PROXY (プロキシ情報:ポート) プロキシのあるネットワーク内から外部のリポジトリにアクセスするために必要。
HTTPS_PROXY (プロキシ情報:ポート) 同上

その他の環境変数については こちら を参照ください。

Pipenvをインストールする

Pipenvドキュメント

PS > py -m pip install pipenv

仮想環境を作成する

ディレクトリ(フォルダ)を作成し、移動する

エクスプローラーなどでこれから作業するためのフォルダを作成して、そこでPowerShellやコマンドプロンプトなどのシェルを起動するか、シェルから、

PS > mkdir ProjectRootDir
PS > cd ProjectRootDir

と実行して ProjectRootDir に移動します。

仮想環境にPythonをインストールする

PS ProjectRootDir> py -m pipenv --python x.x

Pythonのバージョン x.x を指定しない場合、PCにインストールされているPythonの最新バージョン(py コマンドで呼ばれるもの)が仮想環境にインストールされます。

これを実行すると、ProjectRootDirectory フォルダに、.venv フォルダと Pipfile というファイルが作成されます。

仮想環境に必要なパッケージをインストールする

PS ProjectRootDir> py -m pipenv install package_1 package_2 ...
PS ProjectRootDir> py -m pipenv install package_3=VersionNo ...
PS ProjectRootDir> py -m pipenv install package_4==FullVersionNo ...
PS ProjectRootDir> py -m pipenv install --dev dev_only_package ...

2行目のように package=x とバージョンNo.を指定するとメジャーバージョン x の中で適したバージョンをインストールします。
3行目のように package==x.x.x とバージョンNo.を正確に指定することも可能です。
4行目のように --dev オプションに続けて、開発時のみ利用するコードの自動整形用パッケージなどをインストールすると、Pipfilepipfile.lock を使って環境を再現する際にそれらを含めないようにできます。

上記を実行すると、ProjectRootDirectory フォルダの、.venv フォルダにインストールされたパッケージのファイルが保存されます。また、Pipfile にインストールされたパッケージの一覧が記録されます。さらに、Pipfile.lock というパッケージと実際にインストールされたバージョンの一覧が記録されたファイルが新たに作成されます。

仮想環境にインストールしたパッケージを管理する

インストール済みのパッケージを表示する

PS ProjectRootDir> py -m pipenv graph

インストール済みのパッケージの依存関係に脆弱性がないかチェックする

PS ProjectRootDir> py -m pipenv check

インストール済みのパッケージのなかにアップデートできるものがないかチェックする

PS ProjectRootDir> py -m pipenv update --outdated

古いパッケージをアップデートする

PS ProjectRootDir> py -m pipenv update

※パッケージ更新後、Pipfile.lock が更新される。

パッケージをアンインストールする

PS ProjectRootDir> py -m pipenv uninstall package_name

Pipfile.lock に記載のないパッケージをアンインストールする

PS ProjectRootDir> py -m pipenv clean

仮想環境を有効化/無効化する

pipenv shell コマンドで、仮想環境が有効化されたシェルを起動します。

PS ProjectRootDir> py -m pipenv shell

仮想環境下のシェルでは下記のように pip list コマンドでインストール済みのパッケージとバージョンの一覧を確認したり、python some_script.py のようにPythonスクリプトファイルを実行したりできます。

pip list

Package             Version
------------------- -------
package_1           x.x.x
package_2           x.x.x
...

仮想環境の無効化しシェルを終了するには、

exit

と実行します。

また、pipenv shell によって新たなシェルを起動せずに、pipenv run コマンドから、

PS ProjectRootDir> py -m pipenv run pip list
PS ProjectRootDir> py -m pipenv run python some_script.py
PS ProjectRootDir> py -m pipenv run jupyter lab

のように直接元のシェルから各コマンドを実行することも可能です。
2行目、3行目の部分をバッチファイルにすると、Pythonスクリプトの実行やJupyterなどの起動が簡単にできます。

注意点: pipenv run はプロジェクトのルートディレクトリで実行してください。それ以外のディレクトリでは新たに仮想環境を作成しようとしてしまいます。

仮想環境の再現

Pipfile および、Pipfile.lock を他のフォルダや他のPCにコピーして、容易に仮想環境を再現することが可能です。

Pipfile を元にパッケージをインストールする

元の環境と同じパッケージがインストールされますが、バージョンは異なる場合があります。

PS ProjectRootDir> py -m pipenv install

Pipfile.lock を元にパッケージをインストールする

元の環境と同じバージョンのパッケージがインストールされます。

PS ProjectRootDir> py -m pipenv sync

仮想環境の削除

エクスプローラーなどから仮想環境を作成したフォルダ内の .venv フォルダを削除するか、

PS ProjectRootDir> py -m pipenv --rm

と実行することで仮想環境を削除することができます。
(上記コマンドでは Pipfile および、Pipfile.lock は削除されない)

Discussion