Pyenv - 特定のプロジェクトに複数のPythonバージョンをインストールする


Linuxシステムで Python の複数のバージョンを管理することは、特に初心者にとっては簡単なことではありません。同じサーバー上で異なるバージョンのPythonを使用して複数のプロジェクトを開発して実行したい場合、時にはさらに悪いことになります。ただし、 pyenv を使用している場合はこの限りではありません。

Pyenv は、Linuxシステム上で複数のPythonバージョンを管理するためのシンプルで強力なクロスプラットフォームのツールです。

  • Switching the global Python version on a per-user basis.
  • setting the local Python version on per-project basis.
  • Managing of virtual environments created by anaconda or virtualenv.
  • Overriding the Python version with an environment variable.
  • Searching commands from multiple versions of Python and more.

通常、アプリケーション内で使用するバージョンを明示的に指定しない限り、1つのデフォルトバージョンの Python がすべてのアプリケーションの実行に使用されます。しかし pyenv は、複数のバージョンがインストールされている場合に、使用する正しいPythonバージョンにコマンドを渡すために shim (軽量の実行可能ファイル)を使用するという単純な概念を実装しています。

これらのシム pyenv によってパスの前のディレクトリに挿入されます。そのため、Pythonコマンドを実行すると、それが適切な shim によってインターセプトされて pyenv に渡され、アプリケーションで指定されたPythonバージョンが確定されて、あなたのコマンドを正当なPythonのインストールに沿って。これが pyenv の動作の概要です。

この記事では、Linuxに pyenv の最新バージョンをインストールする方法を紹介します。上記の最初の3つのユースケースについても説明します。

LinuxにPyenvをインストールする方法

1. 最初に、各Linuxディストリビューションで次のコマンドを使用して、ソースからさまざまなバージョンのPythonをインストールするために必要なすべてのパッケージをインストールします。

------------ On Debian/Ubuntu/Linux Mint ------------ 
$ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev

------------ On CentOS/RHEL ------------
# yum -y install epel-release
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

------------ On Fedora 22+ ------------
# yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel

2. 次に、Githubレポジトリから最新の pyenv ソースツリーを取得し、次のように /home/mial/.pyenv パスにインストールします。コマンド。

$ git clone https://github.com/pyenv/pyenv.git $HOME/.pyenv

3. これで、 pyenv をインストールしたパスを指すように環境変数 PYENV_ROOT を設定してエクスポートする必要があります。次に、 PATH /bin を追加して、他のシステムコマンドと同じように pyenv コマンドラインユーティリティを実行します。

また、 pyenv init をシェルに追加して、自動補完シムを有効にする必要があります。示されているように、 /home/mial/.bashrc bash起動ファイルでこれらすべてを行います。

$ vim $HOME/.bashrc 

このファイルの最後に次の行をコピーして貼り付けます。

## pyenv configs
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

4. 上記の変更を加えたら、 /home/mial/.bashrc ファイルを読み込むか、または図のようにシェルを再起動します。

$ source $HOME/.bashrc
OR
$ exec "$SHELL"

Linuxに複数のPythonバージョンをインストールする方法

5. これで、 pyenv を使い始める準備が整いました。 Pythonのバージョンをインストールする前に、このコマンドで利用可能なすべてのバージョンを見ることができます。

$ pyenv install -l

6. たとえば、 pyenv から複数のPythonバージョンをインストールできるようになりました。

$ pyenv install 3.6.4
$ pyenv install 3.6.5

7. pyenv で利用可能なすべてのPythonバージョンを一覧表示するには、次のコマンドを実行します。これは pyenv 自体を通してインストールされたバージョンのみを表示します。

$ pyenv versions

8. 次のコマンドでPythonのグローバルバージョンを確認できます。この時点では、デフォルトのバージョンは pyenv ではなくシステムによって設定されたバージョンになります。

$ pyenv global

pyenv コマンドを使用して、グローバルなPythonバージョンを設定できます。

$ pyenv global 3.6.5
$ pyenv global

9. プロジェクトごとにローカルのPythonバージョンを設定できるようになりました。たとえば、/home/mial/python_projects/test にプロジェクトがある場合は、次のコマンドを使ってPythonのバージョンを設定できます。

$ cd python_projects/test
$ pyenv local 3.6.5
$ pyenv version		#view local python version for a specific project 
OR
$ pyenv versions

10. Pyenvは、 pyenv-virtualenvプラグインを介して仮想環境を管理し、Python用の virtualenv および conda 環境の管理を自動化します。 Linuxや他のUNIX系システムでは

以下のコマンドを使用してこのプラグインをインストールすることから始めることができます。

$ git clone https://github.com/yyuu/pyenv-virtualenv.git   $HOME/.pyenv/plugins/pyenv-virtualenv
$ source $HOME/.bashrc

11. 次に、 project1 というプロジェクトの下に venv_project1 というテスト仮想環境を次のように作成します。

$ cd python_projects
$ mkdir project1
$ cd project1
$ pyenv virtualenv 3.6.5 venv_project1

12. すべてのPythonバージョンを一覧表示すると、スクリーンショットに示すように、仮想環境とそのローカルpythonバージョンも一覧表示されるはずです。

$ pyenv versions

13. venv_project1 など、 virtualenv をアクティブにするには、次のコマンドを入力します。

$ pyenv activate venv_project1

pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.

/home/mial/.bashrc ファイルに export PYENV_VIRTUALENV_DISABLE_PROMPT = 1 という行を追加し、そこに他の pyenv設定を追加して、ファイルを読み込みます。強調されている行動をシミュレートするため。

14. 有効にしたvirtualenvを無効にするには、このコマンドを実行します。

$ pyenv deactivate

詳細については、次のコマンドを使用してすべてのpyenvコマンドを一覧表示できます。

$ pyenv commands

詳細については、pyenv Githubレポジトリにアクセスしてください。https://github.com/pyenv/pyenv

pyenv を使うのは本当に簡単です。このガイドでは、私たちはそれをどのようにインストールするかを示し、そしてLinuxシステム上で複数のpythonバージョンを管理するためのユースケースのいくつかをデモンストレーションしました。下記のフィードバックフォームを使用して、質問をしたり、このツールについてのあなたの考えを共有してください。