1
3

pyenvでpythonのバージョン切り替えからvenv仮想環境を構築するまで

Last updated at Posted at 2022-10-21

この記事について

いつも忘れてしまうので手早く探せるようにメモ。
環境はdebian系のubuntu 20.04です、他の環境をお使いの場合はこの記事を参考にしながらご自身で調べてください。

  • pyenvを使った方法と使わない方法両方あります。
    • pyenvとはpythonを複数バージョンを入れて切り替えてくれる便利ツールです
    • 具体的にはgithubページをご覧ください。

pyenvを使わない方

まずはpythonとpipを入れます

  • apt install python3 python3-dev python3-venvでまずpython関連を入れます
    • そしてpipをインストールします。色々な方法はありますが、ここでは一番簡単な方法を使う。
      • まずapt install wgetでwgetを入れます。
      • そしてwget https://bootstrap.pypa.io/get-pip.pyでpipを入れるためのpython scriptをダウンロードします
      • 最後にpython3 ./get-pip.pyで先ダウンロードしたscriptを実行して実際にpipを入れます
      • root userでpipを入れるとvenv使ってくださいという警告が出るが、別にインストールに失敗したわけではありませんので、大丈夫です

入れたら実際にvenvを作ります

  • mkdir <your_work_dir_name> && cd <your_work_dir_name>で作業フォルダーを作って入ります
  • python3 -m venv <your_venv_name>でvenv作成
  • source ./<your_venv_name>/bin/activateでvenv起動
  • ターミナル先頭に(<your_venv_name>)のようなものが付いていれば成功です
  • 一応pip3 --versionで確認、pathがvenvになってたら成功

venvから抜ける

  • deactivateを直接実行すれば抜けれる
  • 効かない場合はsource deactivateをお試しください

pyenvを使って同時に複数バージョンのpythonとvenvを管理する

まずpyenvを入れます

色々な方法はありますが、一番簡単なを使います

  • curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash でpyenvを入れます
  • 入れたらおそらくpathが通ってないので、~/.bashrcというファイルを書き換えてpathを通します
    • 手持ちのvimやviなどの編集ツールを使ってコードを追加しましょう。追加するコードは4行です。
    • export PYENV_ROOT="$HOME/.pyenv"
    • command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
    • eval "$(pyenv init -)"
    • eval "$(pyenv virtualenv-init -)"
    • 以上4行を追加
  • これでpyenvが使えるようになったはずです。pyenv --versionで確認してみましょう

そしてpyenv経由でpythonを入れる

真っ白な環境だと色々な依頼関係が入ってなかったりするので、適切にaptを使って下記のものインストールしてください

sudo apt install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev

参考: 
stack overflow
pyenv wiki

そして入れたら pyenv で python をインストールすることができます

  • pyenv install 3.10.4などで特定なバージョンを入れることができます、今回は3.10.4を入れます

pyenv使ってvenvを作る

  • pyenv virtualenv 3.10.4 <your_venv_name>でvenvを作ります、作るときは使用するpythonバージョンとvenv_nameを指定
    • pyenvを使用するときはディレクトリーを作らなくても直接venvを作成できます
    • venvファイルは~/.pyenv/versions/<your_venv_name>にあります

venvの起動

pyenvでのvenvはpythonバージョンとして扱われるので、切り替える時もpython切り替えと同じです。

  • サブディレクトリーだけでvenvを使う場合
    • mkdir <your_work_dir_name> && cd <your_work_dir_name>で作業フォルダーを作って入ります
    • pyenv local <your_venv_name>でこのディレクトリーでvenvを使用することを言明
    • そして実際に.python-versionというファイルが作られるので、この中にvenvの名前が入ってます
    • これでこのサブディレクトリーに入ったら自動的にvenvに切り替えてくれて、抜けると自動的にvenvから抜けます
    • 試しにcd ..でディレクトリーを抜けましょう、実際にvenvからも抜けたはずです

221116追記

macOS 13(zsh + apple sillicon)

brew経由でpyenvを入れるときに自動的にvitrualenvのpluginを入れてくれないので、手動でbrew install pyenv-virtualenv入れることができます

windows10(powerShell)

  • PowerShell Script経由で導入したらpython cmdはシステムにインストールしていた旧バージョンのpythonと被ってしまったためpyenvで指定したとしてもgcm python | flはsystemを指してしまう
  • 解決法としてはpathからC:\Users\<your_user_name>\Local\Programs\Python\に関するpathを全部消したら自動的にpyenvを使ってくれた
  • virtualenv pluginはwindowsをサポートしていないらしいので、以下の手順を踏む必要がある
    • まずmkdir <your_dir_name>でvenvのフォルダーを置くディレクトリを作ります
    • cd <your_dir_name>で先作ったディレクトリに入ります
    • pyenv local 3.10.4もしくはpyenv shell 3.10.4でpython versionを指定する
    • python -m venv <your_venv_name>でvenvを作る
    • .\<your_venv_name>\Scripts\Activate.ps1で環境を起動します
    • gcm python | flで検証します。Pathが先作ったvenvになってたら成功です
    • 念のためpip --versionなども使って検証しましょう。同じくpathがvenvになってたら成功です
      • 筆者の環境だとvenvの中に入るとpython3,pip,pip3などのコマンドが効かなくなります、pythonだけが叩ける環境になってしまう
      • 別にエラーが出るとかではないだが、python3 --versionpip --versionpip3 --versionなどのコマンドが一切反応しなくなり、なにも出力がないという変な状態です。
      • gcm pip | flで見てもちゃんとpathが通っているけどね。。。
      • 解決法としてはpipを使うときはpipじゃなくてpython -m pipを使うとできるじゃできるけど、一向に謎です
      • わかる人がいましたらコメントお願いいたします。。。
    • 抜けるときはdeactivateで抜けます

以上です

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3