BEACHSIDE BLOG

Azure とか C# 好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

pyenv-win を使って Python の環境を Windows 10 でセットアップ

PC を新しくして、Python の環境を作ろうと思った今日この頃です。以前の PC では anaconda つかった環境構築のブログを書きましたが

blog.beachside.dev


今回は pyenv 使ってみようと思いました♪ 理由は使ったことなかったからだけです。

github.com

このブログを書いたとき (7月にセットアップしたとき下書きして放置してた...) は Windows 10 May 2020 Update (Version 2004) がインストールできなかったときなのであえて WSL2 はインストールせず普通にコマンドプロンプトでセットアップしました。

インストール方法はいくつかあります。

  • pip: pip をすでにインストール済みの人向け
  • zip ファイルをダウンロード
  • Git: git clone する
  • Chocolatey

このブログを書いた時点では、PC を買ったばかりで Python が入ってないので、git clone していきます。ちなみに私がインストールしたバージョンは、Pyenv の 2.64.2 です。

pyenv のセットアップ

インストール

コマンドプロンプトで行きましょうか。コマンドプロンプトを開いて以下のコマンドを実行します。

git clone https://github.com/pyenv-win/pyenv-win.git %USERPROFILE%/.pyenv

f:id:beachside:20200719000923p:plain:w600

環境変数の追加

環境変数の以下を追加します。

環境変数が不安がある方は事前にバックアップしておきましょう(自動でされてるってのはあるけど)

管理者権限で PowerShell を開いて以下を実行します。PYENV って環境変数が追加されます。

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

次は、これ。path に pyenv で使う環境変数を二つ追加しています。

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

f:id:beachside:20200812232227p:plain

注意点として、コマンドではなく手で path を追加するときは %USERPROFILE%\AppData\Local\Microsoft\WindowsApps の値より上にセットする必要があります。こいつは Microsoft Store の Python の環境変数にもなるので (←Store から Python をインストールしている場合ですが)、こいつより下にいると Microsoft Store の Python が先に読み込まれてしまうからです。コマンドでやったら一番上に来るので心配ないです。

ここまで来ての余談ですが、こちらの公式ブログ を読んで、Store から Python をインストールして pip で pyenv-win を管理したほうが最適なのかな?と思ったりしました。

後は環境変数が認識されているか確認しましょう。

今設定した環境変数を読み込ませるために、既存で開いてるコマンドプロンプトは閉じて、新たにコマンドプロンプトを起動します。

pyenv --version って打って認識されればOKです。

f:id:beachside:20200719005658p:plain:w400

認識されたら、一度以下を実行します。

pyenv rehash

pyenv の基本コマンドチートシート

よく使いそうなコマンドを書いておきます。

何かうまくいかない場合は...

まず困ったらなコマンドを書いておきます。どんな時使うかはブログの最後に書いてます。

pyenv rehash

サポートしてる Python のバージョンの一覧を見る

pyenv install -l

特定のバージョンをインストールする

v3.6.7 をインストールすならこんな感じ。

pyenv install 3.6.7

環境に設定できるバージョンの一覧を確認

インストールした一覧が表示されます。

pyenv versions

f:id:beachside:20200719011110p:plain:w400

環境の設定する

実際に使う環境としてセットします。いくつかのオプションがあります。

デフォルト設定として使うには global をつけます。

pyenv global 3.8.2

特定のフォルダに対してバージョンを変えるには、local を付けます。

pyenv local 3.6.7

現在使ってる pyenv のバージョンを確認する

これで確認できます。

pyenv version

f:id:beachside:20200719011927p:plain:w400

環境ができたので、次回は VS Code での Python 環境のセットアップをしましょう。

pyenv をアップデートする

ここら辺を読んでやればよいようです。今インストールしたばかりでまだ試す機会が訪れてないので、アップデートする機会があったらこの部分の記事を更新するかもしれません♪

GitHub - pyenv-win/pyenv-win: pyenv for Windows. pyenv is a simple python version management tool. It lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.

Python の動作確認

正常に設定ができていると、コマンドで python って打てば、以下のように Python をインタラクティブに実行できるはずです。

f:id:beachside:20200813001429p:plain:w480

動かねー!(私の経験談)

Python って打って Microsoft Store が立ち上がってくるようだと環境変数が認識されていないとか %PYENV%\shims が空とかです。

私はこの状況で悩まされたので、pyenv-win はもう使いたくねーな、WSL で pyenv か今まで同様に Anaconda やなと感じてます。

pyenv versionspyenv version のコマンドで設定した通りの状況になってるか見ましょう。私の場合 pyenv versionspyenv version で設定されているものが異なっている( pyenv versions に存在しないものが pyenv version で設定されてる不思議な事象になってました。)

ということで困ったときはこのコマンドを打ちます。

pyenv rehash

%PYENV%\shims のフォルダが正しい状態になります。

だいたいはこれで解決するんでしょうけど、私の場合はなぜか動かない....環境変数の設定もおかしくない。

ということで、システム環境変数にも同様の環境変数をぶっこんだら普通に動きました。 再起動しても大丈夫だったのでこれでいいか。

なんか納得できなかったので上記の対応で普通に動くようになった後、環境変数の設定で色んなこと試しましたがだめでしたね...GitHub の README に書いてある通りに動かして動かなくて釈然とせず。