[Python] pyenvを使ってPythonの複数のバージョンを使い分ける
こんにちは、@yoheiMuneです。
Pythonの仕事をしていると様々なPythonバージョンを扱う事に・・・。
それでは早速、具体的な使い方を見てみましょうー。
プロジェクト単位では基本的には
https://github.com/yyuu/pyenv
https://github.com/yyuu/pyenv-installer
pyenvとvirtualenvで環境構築 - Qiita
MacでPython 3.5.0インストールに失敗したら - Qiita
最後になりますが本ブログでは、Python・Linux・フロントエンド・インフラ・Go言語・Node.js・開発関連・Swift・Java・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
Pythonの仕事をしていると様々なPythonバージョンを扱う事に・・・。
python3.6
みたいにコマンド名にバージョンを含めて使う使い方でもいいんですが、今日はpyenvを用いたバージョンの使い分けをブログに書きたいと思います。目次
pyenvとは
pyenvとはPythonの複数のバージョンを使い分けるコマンドラインツールで、RubyのrbenvやNodeJSのnvmのようなバージョン管理ツールです。これを作ったのは日本の方のようで、すごいですね。これを使えば案件ごとにpythonのバージョンを細かく決められるので、とても便利に使えます。それでは早速、具体的な使い方を見てみましょうー。
pyenvをインストールする
インストールにはいくつかの方法が用意されていますが、Github上にあるシェルを実行するのが一番簡単で良いです(環境依存も少ないです)。具体的には以下のコマンドを実行します。curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bashその後、
~/.bash_profile
などに以下の環境設定を追記しておきます(シェル起動時に自動的に有効にするため)。# ~/.bash_profile export PATH="/Users/munesadayohei/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"そして上記の
.bash_profile
を読み込んでインストール完了です。$ source ~/.bash_profileこれで、以下のコマンドが認識されればOKです。
$ pyenv
pyenvを使ってみる
それでは早速、pyenvを使ってみたいと思います。Pythonのバージョンを追加する
pyenv install
を使と、Pythonのバージョンを追加できます。# pyenv install <python_version> # 以下はPythonの3.6.0をインストールする場合 $ pyenv install 3.6.0ここでMacの場合に以下のようなエラーが発生する場合、ツールが足りないのでインストールをします。
# Macの場合にエラーが発生するかも・・ $ pyenv install 3.6.0 # 中略 # zipimport.ZipImportError: can't decompress data; zlib not available make: *** [install] Error 1
# XCODEツールをインストールする $ xcode-select --installこれで、
3.6.0
のバージョンをインストールすることができました。現在のバージョンを確認する
pyenv version
を使うと、現在有効なPythonバージョンを確認できます。$ pyenv version system (set by /Users/munesadayohei/.pyenv/version)ここでは、まだpyenvでのバージョン切り替えはしていないので、システム標準のものが使われています。
利用可能なバージョン一覧を確認する
pyenv versions
で、インストール済みのPythonバージョンを一覧で確認できます。$ pyenv versions * system (set by /Users/munesadayohei/.pyenv/version) 3.6.0上記でインストールした3.6.0もちゃんとありますね。
pyenvでバージョンを切り替える
それでは本題のところです。pyenvでバージョンを切り替えてみましょう。pyenvでは以下の3パターンで、バージョンを指定することができます。コマンド | 内容 |
shell | 現在のシェル内でのみ有効なバージョン指定 |
local | 現在のディレクトリとそれ以下のディレクトリで有効なバージョン指定 |
global | システム全体でのPythonバージョンを指定する |
local
を使うと良いかと思います。そしてそれらの優先順位ですが、以下の順で適用されます。shell > local > global
shell
が一番優先され、global
が最も優先度が低い設定です。pyenv shellでバージョン変更する
pyenv shell
を使うと、現在のシェルでのみ有効なバージョンを指定することができます。$ pyenv shell 3.6.0 $ python --version Python 3.6.0この指定は
PYENV_VERSION
という環境変数に保存されます。pyenv localでバージョン変更する
pyenv local
を使うと、現在のディレクトリとそれ以下のディレクトリで使うバージョンを指定できます。$ pyenv local 3.6.0 $ python --version Python 3.6.0
local
を実行すると、実行したディレクトリに.python-version
というファイルが生成され、その中にバージョンが記載されています。そのファイルを削除するとlocal
の指定は無くなります。pyenv globalでバージョン変更する
pyenv global
を使うと、システム全体で使うバージョンを指定します。別にshell
やlocal
で指定がある場合にはそちらが優先されます。$ pyenv global 3.6.0 $ python --version Python 3.6.0
global
を実行すると、~/.pyenv/version
というファイルができて、その中にバージョンが記載されます。そのファイルを削除するとglobalの設定も無くなっちゃいます。site-packagesの場所
pyenvでインストールしたPythonのsite-packgesは、以下の場所になるようです。$ python -c "import site; print(site.getsitepackages())" ['/Users/munesadayohei/.pyenv/versions/3.6.0/lib/python3.6/site-packages']Pythonをインストール直後は空っぽなので、必要あれば追加します。
参考資料
pyenvを学ぶために以下を参照しました。ありがとうございます。https://github.com/yyuu/pyenv
https://github.com/yyuu/pyenv-installer
pyenvとvirtualenvで環境構築 - Qiita
MacでPython 3.5.0インストールに失敗したら - Qiita
最後に
どの言語で実装するにも、バージョンの切り替えツールはありがたいですね。virtualenvについても今後ブログに書こうと思います。最後になりますが本ブログでは、Python・Linux・フロントエンド・インフラ・Go言語・Node.js・開発関連・Swift・Java・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!