山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

Windowsでpyenv(pyenv-win)

pyenvを使おうと思って公式見たらpyenv-win使えと書いてあった。

If you're on Windows, consider using @kirankotari's pyenv-win fork. (pyenv does not work on windows outside the Windows Subsystem for Linux)

使い方も含めてメモ

pyenvとは

  • Pythonのバージョンを切り替えるツール
    • それ以外の事をしないというのが混乱しないためのポイント。
  • ライブラリ管理的な事もできるようだが、そちらはPython公式がサポートしているvenvを使用する
    • この記事の最後に書いた。

前提

  • python(pip)がインストール済み

インストール

詳細はpyenv-winのGitHubをみてください。

  • install
pip install pyenv-win --target %USERPROFILE%/.pyenv
  • PATHに追加
    • 既存のpythonよりも前に追加する必要がある
      • 管理者権限を持っておらず、管理者権限のPATHにpythonがあるPATHが設定してあるとpyenv云々の前に使用するpythonが決まってしまう。
      • ↑この場合、打つ手はなさそう。
    • %USERPROFILE%\.pyenv\pyenv-win\bin
    • %USERPROFILE%\.pyenv\pyenv-win\shims
      • この時点だと「shims」は空
    • %USERPROFILE%/.pyenv 」は「 C:\Users\yamap_55\.pyenv 」となる。
  • 別のコマンドプロンプト起動
    • セッションを切り替えないと環境変数が有効とならないため
  • PATHが通っていることを確認
    • pyenv --version
  • 設定
    • pyenv rehash
    • バージョンが切り替わらないなど何かあったらrehash

使い方

  • インストール可能なバージョン確認
pyenv install --list
pyenv install 3.5.2
  • pythonのバージョン切り替え
pyenv local 3.5.2

どうやって切り替えている?

  • pythonが呼ばれる
  • PATHを辿る
  • shims下にpython.batを見つける
    • shimsの前にpythonがあるとpyenvは起動せず、バージョンが切り替わらない
    • shims内が空だとpyenvは起動せず、バージョンが切り替わらない
  • python.batからpyenvが呼ばれる
  • 「.python-version」から指定されたpythonのバージョンを調べ、pythonが実行される
    • ここはコード見ていないので想定。

メモとか

  • pyenvがある状態での仮想環境作成
mkdir project
cd project
pyenv install 3.5.2
pyenv local 3.5.2
python -m venv .venv
.venv\Scripts\activate