Pythonやプログラミング言語では、使用するライブラリやフレームワーク、依存関係との互換性に合わせて、複数のバージョンをサイドバイサイドでインストールしておく必要に迫られる場合が多々あります。そのような場合に活用できるのが、”バージョン管理ツール”、”バージョンマネージャー”などと呼ばれるもので、Python言語では”pyenv”がそれにあたります。
Ubuntu 16.04にpyenvをインストールしてPythonのバージョン管理を可能にしてみましょう。Ubuntu18.04、WSLでも同様に可能です。
インストールします。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
~/.bashrc
へ追記します。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
ここで注意があります。以下の通り、echo $BASH_ENV
にて~/.bashrc
が出力されるようであれば、~/.bashrcへ上記コードを追記するのはやめたほうがいいらしいとのことです。その代わりに、~/.bash_profile
へ追記をします。
僕の環境では~/.bash_profile
は作っておらず、またBASH_ENV
も未定義であったので、無視して.bashrcへ追記をして使っていますが、問題は出ていません。
General warning: There are some systems where the BASH_ENV variable is configured to point to .bashrc. On such systems you should almost certainly put the abovementioned line eval “$(pyenv init -)” into .bash_profile, and not into .bashrc. Otherwise you may observe strange behaviour, such as pyenv getting into an infinite loop.
再起動します。
bash
以下の通り、Pythonをpyenvでインストールする前に、依存関係のプログラムをインストールしてくれとあります。
Install Python build dependencies before attempting to install a new Python version.
Python環境がすでにある方は問題ないかと思いますが、Python自体インストールしていないという方はこれらをインストールしておく必要がありそうです。
実際に検証していませんが、だいたい以下のコードを実行しておけば問題ないかと思います。
sudo apt-get install -y python3-pip python3-dev # for Python 3.n
pip3 install --upgrade pip
以下で任意のバージョンのPythonをインストールできます。
pyenv install 3.6.7
pyenv install 2.7.12
pyenv global
で使用するPythonのバージョンを指定します。これで、自動でpython
やpython3
コマンドがpyenvにオーバーライドされたことになります。
$ pyenv global 2.7.12 3.6.7
$ pyenv versions
system
* 2.7.12 (set by /Users/yyuu/.pyenv/version)
* 3.6.7 (set by /Users/yyuu/.pyenv/version)
$ python --version
Python 2.7.12
$ python2.7 --version
Python 2.7.12
$ python3.6 --version
Python 3.6.7
pyenvでバージョンを変更する前には失敗していたコマンドが…
$ python3 --version
Python 3.5.2
$ epy 'regex_match("hoge","hoge")'
File "/mnt/c/pg/epy.py", line 28
if ( re.match(rf"{regex}", text, re.M) ) : return True
^
SyntaxError: invalid syntax
エラーなく成功するようになりましたね。
$ python3.6 --version
Python 3.6.7
$ python3 --version
Python 3.6.7
$ epy 'regex_match("hoge","hoge")'
$
関連記事:
Windows 11にPythonをインストールする
Imagededupで類似画像を抽出、検出する(Python)
自然言語テキストが何語なのか判定する [fastText]
Pythonで投資の複利計算をする
Pycharmの有料版を無料でインストールするには
関連広告: