😵

もうPythonの開発環境で悩むのは最後にしよう(Windows 10/11編)

2022/06/13に公開

Pythonの開発環境、非常につらいですよね。
もうこの記事で悩むのは終わりにしましょう。

インストールするもの

Microsoft StoreのPython
pyenv
pipenv

インストールしないもの

Anaconda

Anacondaはよく悩みの原因になるのでもう使うのはやめにしました。ただ、Anacondaは導入が非常に楽なので初心者はAnacondaでも良いかもしれません。が、後に苦しむことが多いと思いますのでご注意を

1. Microsoft StoreでPythonのインストール

こちらからインストールしてください。
なお、現最新版は3.10ですが、新しいバージョンがある場合はそちらを入れたほうが良いと思います。

2. コマンドプロンプトでpyenvのインストール

Powershellでは%USERPROFILE%が名前解決されないので必ずコマンドプロンプトを使用してください。

> pip install pyenv-win --target %USERPROFILE%\.pyenv --no-user

このコマンドにより、%USERPROFILE%\.pyenv、つまりユーザディレクトリの配下に.pyenvディレクトリが作成されます。

簡単なpyenvの説明

pyenvは任意のpythonをインストールして使用できるようにするツールです。
Pythonはプロジェクトによって使用するバージョンが大体の場合異なっていますので、柔軟にバージョンを切り替えられるようにpyenvを導入しています。

任意のPythonのバージョンをインストールするにはpyenv install 3.7.9のようにterminalで実行してインストールが可能です。インストール後はpyenv local 3.7.9とすれば今いるディレクトリにそのバージョンを適用、pyenv global 3.7.9とすれば全体としてそのバージョンを使用するように設定が可能です。
pyenv localでディレクトリごとに個別にバージョンを設定するのが面倒と思った方もいると思いますが、親切なプロジェクトだと.python-versionというファイルをプロジェクトのルートディレクトリに配置してバージョンを指定してくれています。pyenvは自動でこのファイルを調べ適切なバージョンを検知して自動で使用してくれます。

3. pyenvのPATHを通す。

pyenvをインストールしただけでは、ターミナルから使うことはできません(フルパスで指定すれば使えますが)
ですので、Windowsの環境変数を設定してあげる必要があります。2つの方法で導入可能ですのでお好きな方をお選びください。

設定方法1 Powershellでサクッと追加

Powershellで以下のコマンドを打つだけでPATHを通す設定などがすべて終わります。

[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")

[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

設定方法2 手動で環境変数に追加

(設定方法1で行えばいいと思うのですが、設定方法2を書いた後に設定方法1の方法を知りましたので、消すのがもったいなく載せたままにしておきます。)
Windowsボタンを右クリック→システム→デバイスの仕様覧のシステムの詳細設定

の環境変数を押下

ユーザ環境変数でPYENVを新規追加する

PYENV
%USERPROFILE%\.pyenv\pyenv-win

ユーザ環境変数でPATHを編集

%PYENV%\bin
%PYENV%\shims

ここで注意ですが、PATHの%PYENV%\bin %PYENV%\shims の2つは必ずその下にあるWindowsAppsよりも上に持ってきてください。
WindowsAppsのPATHの中にはMicrosoft StoreでインストールしたPython 3.10が含まれていて、これを上に持ってきてしまうと、優先度の影響でpyenvのPythonではなくこちらのPythonが使われてしまいます。

設定完了後にpyenvが使えるかのチェック

これでPATHは通りましたのでコマンドプロンプトで確認してみましょう。
一回ターミナルを閉じて再起動してPATHを反映させてから実行してみてください。

以下のように表示されれば成功です

> pyenv --version
pyenv 2.64.11

せっかくですので現時点で最新のPythonをインストールしておきましょう。

> pyenv update

でまずはpyenvが持つPythonのバージョン一覧を更新します。その後pyenv install -lで表示されたバージョン一覧の中で一番新しいバージョンを入れてみます。

> pyenv install 3.10.5

念のため今インストールしたバージョンを全体で使用するPythonとして登録しておきましょう

> pyenv rehash
> pyenv global 3.10.5
> python
Python 3.10.5 (tags/v3.10.5:f377153, Jun  6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 

無事今インストールしたPython 3.10.5が使われていることが確認できました。

4. コマンドプロンプトでpipenvのインストール

次にpipenvをインストールします。これは、最近のPythonプロジェクトのデファクトスタンダードになっているパッケージ管理ツールで、Pythonで使用するpipパッケージはもちろんですが、pyenv経由でPython自体のインストールまで行ってくれるツールです。

こちらも念のためコマンドプロンプトで実行します。

> pip install --user pipenv

これでインストールは完了です。

> pipenv --version
pipenv, version 2022.6.7

このように表示されていれば成功です。
pipenv自体はgitからcloneしてきたリポジトリがpipenvプロジェクトだった場合や、これから自分で新しいプロジェクトを作る際に使用するものですので、これ以降のpipenvの詳細は割愛します。

5. それ以外のパッケージのインストール

今後、pyenvでglobalになっているPythonのpipを用いて他のパッケージをインストールしていくことになると思います。その際はpipコマンドで以下のようにインストールしていきましょう。

# 例 Jupyter Labをインストールしてみる
> pip install jupyterlab

# インストールしただけではPATHを通したshimsにjupyterが無く実行ができない状態のためrehashします。
> pyenv rehash
> jupyter-lab

これで無事JupyterLabが起動できました。

おわりに

WindowsのPython開発環境導入は非常に骨の折れる作業です。コーディングを始める前から苦しみたくないものですよね。これで悩むのは終わりにさせましょう!!

Discussion