pyenvとpipenvの導入方法をまとめる(Windows版)

您所在的位置:网站首页 pipfile pyenvとpipenvの導入方法をまとめる(Windows版)

pyenvとpipenvの導入方法をまとめる(Windows版)

2023-05-29 19:05| 来源: 网络整理| 查看: 265

概要 Dockerを使用しないといけないレベルではないが、Python関連の環境を管理したい、またはすぐに共有したい場合にpyenvとpipenvが便利なので導入方法をまとめる。 前提 OS:Windows 状態:Pythonをインストール済み, cmdでpipが使用できる 目次 pyenv, pipenvとは? pyenv, pipenv導入方法(Windows版) 実際にpyenvとpipenvを使ってみる pipenvの応用 pyenv,pipenvのリセット 参考文献 1. pyenvとpipenvとは? pyenvとpyenv-winについて pyenvはPythonのバージョン管理ツールで、複数のPythonのバージョンを一つのシステム上で管理することができる。pyenvを使うと、システム全体ではなく特定のプロジェクトだけで特定のPythonのバージョンを使用することができる。 pyenv-winはWindowsで動作するpyenvのフォークのことを指している。元のpyenvはLinuxとmacOSを対象にしているが、pyenv-winはそれをWindowsでも使えるように拡張したものである。 pipenvとは? pipenvはPythonのパッケージ管理ツールで、パッケージの依存関係を管理し、仮想環境を作成する機能を提供する。 pipenvはPipfileとPipfile.lockを使ってパッケージの依存関係を明示的に管理する。これにより、パッケージの依存関係を明確にし、再現性のある開発環境を構築することが可能になる。 ! pyenvとpipenvの関係性

実は、pyenvとpipenvは互換性のあるものではない。それぞれが解決する問題が異なるため、組み合わせて使うことでPythonの開発環境管理をより効果的に行うことができるのである。

より詳細な説明 pyenvはPythonのバージョン管理にフォーカスしている。Pythonには多くのバージョンがあり、それぞれのバージョンで挙動が異なることがある。特に、Python 2とPython 3では大きな違いがある。また、新しいPythonのバージョンがリリースされると、古いバージョンから新しいバージョンに移行する必要がある。pyenvは複数のバージョンのPythonを管理できるためこういった問題を解決するのに役立つツールである。 pipenvはPythonのパッケージ管理と仮想環境の作成にフォーカスしている。Pythonプロジェクトでは多くのパッケージを使用しているが、それぞれのパッケージが依存する他のパッケージのバージョンが異なる場合、依存関係の衝突が起こることがある。pipenvはこれらの問題を解決するのに役立つツールである。 !

PipfileとPipfile.lockについては後ほど解説

2. pyenv, pipenvの導入方法(Windows版) pyenvの導入

Step1. pyenv-winをインストールする pyenvをWindowsで使用する時は、公式が提供しているpyenv-winを使用する。 https://github.com/pyenv-win/pyenv-win

cmd or terminal py -m pip install pyenv-win

完了したら一度cmdを開き直しpyenvと入力する。そうすると以下のエラーがでるはずである。

pyenv 'pyenv' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ! 注意

通常、pipを使用してインストールするとpipが自動的にPATHを通す仕組みになっているが、pyenv-winはPATHが自動的に通らないため自分で環境変数を設定しないといけない

Step2. 環境変数を設定する 今回の設定で必要な環境変数は5つである。

番号 環境変数名 パスのexample 1 PATH C:\Users\ユーザ名\.pyenv\pyenv-win\bin 2 PATH C:\Users\ユーザ名\.pyenv\pyenv-win\shims 3 PYENV C:\Users\ユーザ名\.pyenv\pyenv-win 4 PYENV_ROOT C:\Users\ユーザ名\.pyenv\pyenv-win 5 PYENV_HOME C:\Users\ユーザ名\.pyenv\pyenv-win

これらの項目を設定していく。 まず、以下の写真の検索欄で環境変数と入力すると、システム環境変数の設定が出てくるはずである。 そして、システム環境変数を押し移動すると以下の写真になるはずである。 この中の環境変数(N)...を押すと以下の写真になるはずである。 上記の写真の中で設定しなければならないのがPathである。なにも触ってなければデフォルトで存在している環境変数である。このPathに先程書いた表の1,2を設定する。 もう一度インストール処理を実行する。 入力

cmd or terminal py -m pip install pyenv-win

出力

cmd or terminal Requirement already satisfied: pyenv-win in c:\users\hoge\hogelocal\...\site-packages (?.?.?)

のようなパスが出てくるはずである。 このパスのsite-packagesまで含めてすべてコピーする。この例でいくとc:\users\hoge\hogelocal\...\site-packages このあとに、\pyenv-win\binと\pyenv-win\shimsを追加する。このように完成したパスを環境変数Pathに追加する。 Pathにカーソルを合わせ⇛編集をクリック⇛新規⇛パスを記述する  最後に、PYENV, PYENV_ROOT, PYENV_HOMEを新しい環境変数として追加し、c:\users\hoge\hogelocal\...\site-packages+\pyenv-win\を環境変数に割り当てる。 これで環境変数の設定が完了した。cmdで以下のコマンドを入力し、以下の出力が出ることを確認する。 入力

cmd or terminal pyenv

出力

cmd or terminal pyenv ?.?.? # ←ここは現在のバージョンが入っている Usage: pyenv [] Some useful pyenv commands are: commands List all available pyenv commands duplicate Creates a duplicate python environment local Set or show the local application-specific Python version global Set or show the global Python version shell Set or show the shell-specific Python version install Install a Python version using python-build uninstall Uninstall a specific Python version update Update the cached version DB rehash Rehash pyenv shims (run this after installing executables) vname Show the current Python version version Show the current Python version and its origin version-name Show the current Python version versions List all Python versions available to pyenv exec Runs an executable by first preparing PATH so that the selected Python which Display the full path to an executable whence List all Python versions that contain the given executable See `pyenv help ' for information on a specific command. For full documentation, see: https://github.com/pyenv-win/pyenv-win#readme pipenvの導入

こちらは非常に簡単 以下のコマンドを実行するだけ

cmd or terminal py -m pip install pipenv 3. 実際にpyenvとpipenvを使ってみる

準備ができたのでpyenvとpipenvを使って環境を構築していく。

1. pyenvの設定を行う。

Step1. 利用可能なPythonのバージョンを表示し(実行場所はどこでも良い)インストールする。 以下のコマンドを実行すると

cmd or terminal pyenv install --list

このような出力がされる

cmd or terminal 3.10.3-win32 3.10.3 ・ ・ ・ 3.10.4-win32 3.10.4 ・ ・ ・ 3.11.0b3 3.11.0b4-win32 3.11.0b4

以下のコマンドで任意のPythonをインストールする。

cmd or terminal pyenv install ?.?.?(バージョン名)

ここで正常にインストールできたのかを確認するために以下のコマンドを実行し確認する。 入力

cmd or terminal pyenv versions

出力例

cmd or terminal 3.10.5 3.11.0b4

Step2. pyenvでインストールしたPythonをシステムを作成しているディレクトリに固定する。  以下のコマンドでpyenvでインストールしたPythonの中で任意のバージョンを作業ディレクトリ内に適用させることができる。

cmd or terminal pyenv local 3.10.5

実行後には.python-versionというファイルが作成され実行ディレクトリで使用するPythonのバージョンを記録している。

2. pipenvの設定を行う

pipenvを導入する際に考えられる状況は2つある。1つ目は、新規システム開発前に環境を構築するというパターン、2つ目は、既存のシステムに環境を構築するというパターンである。

1. 新規で環境を構築するパターン**

一番最初にも説明した通り、pyenvとpipenvは独立した機能だと考えた方が良い。つまり、pyenvで指定したpythonのバージョンを自動で取得してpipfileに書き込むといった機能はなく(少なくとも僕は見つけることができなかった)、pipenvを使用する際にpyenvで指定したpythonのバージョンを指定する必要がある。 Step1. pipenvを利用して指定のPythonバージョンで仮想環境を作成する 以下のコマンドを実行

cmd or terminal pipenv install --python 3.10.5

例えば以下のディレクトリ構成においてtestディレクトリで上記のコマンドを実行するとPipfileとPipfile.lockが生成される。

! Pipfile Pipfileとは?

Pipfileはプロジェクトの依存関係を明示的にリストアップしたファイルである。基本的には、Pythonのパッケージ(ライブラリ)とそのバージョンを指定する。

Pipfileには通常、以下の2つのセクションがある。 [packages]: プロジェクトの本番環境で必要なパッケージをリストする。 [dev-packages]: 開発やテストのためだけに必要なパッケージをリストする。 以下は一例である:

Pipfile [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] requests = "*" [dev-packages] pytest = "*"

このPipfileは、requestsパッケージが本番環境で、pytestパッケージが開発環境で必要であることを示している。アスタリスク(*)は、任意のバージョンを指定することを意味する。

! Pipfile.lock Pipfile.lockとは? Pipfile.lockはPipfileに基づいて自動生成されるファイルで、プロジェクトの依存関係の具体的なバージョンを記述する。これにより、プロジェクトの依存関係が完全に再現可能になり、同じ環境を他のマシンや他の開発者と共有することが容易になる。 またJSON形式で書かれており、それぞれのパッケージとそのバージョン、依存関係、ハッシュ値などを詳細に記述している。このファイルは手動で編集するものではなく、pipenv installやpipenv lockコマンドを実行すると自動的に更新される。 ディレクトリ構成 test |main.py |.python-version # pyenvで指定したバージョンの記録 |Pipfile # 生成されたファイル |Pipfile.lock # 生成されたファイル Pipfile # Pipfileの中身 [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] [dev-packages] [requires] python_version = "3.11" python_full_version = "3.11.0"

Step2. pipenvを利用して仮想環境にライブラリを追加する  仮想環境にライブラリを追加する場合以下のコマンドを実行する。

cmd or terminal pipenv install ライブラリ名==バージョン

あらかじめ使用するライブラリが決まっているのであれば、requirements.txtと命名したテキストファイルにライブラリ名とライブラリのバージョンを記述して、以下のコマンドを実行する。

requirements.txt openpyxl==バージョン pandas==バージョン cmd or terminal pipenv install -r requirements.txt Pipfile # Pipfileが更新されて[paclages]の中身にrequirements.txtの中身が反映されていることが分かる [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] openpyxl=="==バージョン" pandas=="==バージョン" [dev-packages] [requires] python_version = "3.11" python_full_version = "3.11.0" 2. 既存システムに環境構築する場合

既存システムがある程度進んでいる場合、requirements.txtを手書きで作成するのは少々めんどくさい。そこでpipreqsというライブラリを使用して一括でrequirements.txtを作成してみる。 まず、pipreqsをインストールする。基本的に既存のシステムに導入する際、増える作業はこれだけである。

cmd or terminal py -m pip install pipreqs

以下のコマンドで実行ディレクトリ以下のディレクトリ内に存在するライブラリがすべて記述されたrequirements.txtが生成される。

cmd or terminal py -m pipreqs.pipreqs --encoding utf-8

作成されたrequirements.txtをpipenv installコマンドを利用して仮想環境に追加すれば良い。

4. pipenvの応用

Pipfileには[packages]や[requires]等の記述があるが同様に[scripts]と記述し実行コマンドを設定すると任意の実行コマンドでシステムを実行できるようになる。具体例を見ながら説明していく。 まず以下のようなディレクトリ構成のシステムがあったとする。

ディレクトリ構成 C:. | .python-version | main.py | Pipfile | Pipfile.lock | requirements.txt

main.pyには以下のコードが記述されている。これはPythonフレームワークであるFastAPIの簡単なコードである。 https://fastapi.tiangolo.com/ja/

main.py from fastapi import FastAPI app = FastAPI() @app.get("/") def root(): return {"message": "Hello World"}

そして仮想環境を生成後に[scripts]を追記したPipfileが以下である。

Pipfile [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] fastapi = "==0.95.2" uvicorn = "==0.18.2" [dev-packages] [requires] python_version = "3.11" python_full_version = "3.11.0" [scripts] start = "py -m uvicorn main:app --reload" # 追記部分

ここで追記部分を見るとstartに本来の実行コマンドを割り当てていることが分かる。  これがきちんと設定できていると、実行時に以下のコマンドを入力するだけでサーバーが起動する。ちなみにpipenv runコマンドはコマンド実行時のみpipenvで生成した仮想環境内で実行するというものである。pipenv run以降に実行コマンドを置くことでシステムを実行しているのである。

cmd or terminal pipenv run start

やっていることは以下と同様である。

cmd or terminal pipenv run py -m py -m uvicorn main:app --reload 5. pyenv,pipenvのリセット

pyenv

.python-versionファイルを削除することで特定のディレクトリに対するPythonバージョンの指定がリセットされる。

pipenv

! リセット方法 PipfileとPipfile.lockを消すだけではリセットされない。 実は、pipenvで作成される仮想環境は.virtualenvsフォルダの中に保存されている。そのためそのフォルダを消さなければリセットされないのである。 以下のコマンドを作業ディレクトリで実行すると.virtualenvsのどのフォルダに仮想環境があるかのパスが表示されるためそれで確認を行う。

入力

cmd or terminal pipenv --venv

出力例

cmd or terminal C:\Users\ユーザー名\.virtualenvs\実行フォルダ名-??????

上記の場合、削除すべきフォルダは実行フォルダ名-??????である。

6. 参考文献

https://zenn.dev/sql_geinin/articles/29f2b0a5c55db2

ChatGPT先生(gpt-4)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3