開発者ドキュメント

PyenvとDirenvを使用してPythonを管理する方法

###序章

始めたばかりでも、経験豊富なPython開発者でも、Python環境の管理は面倒で面倒な作業であることに気付いたかもしれません。 Pythonのバージョン、ライブラリ、およびさまざまな依存関係の管理は、オブジェクトが他のパックにヒットしないシャッフルボードをプレイするようなものです。 そうした場合、パックが望まない場所に飛んでいくというカスケード効果の可能性がすぐに続きます。

このチュートリアルでは、Python環境を管理するために pyenv をインストールし、 direnv をインストールして、プロジェクトのvirtualenvを自動構成およびソースし、プロジェクトのグローバルPythonバージョンとローカルPythonバージョンを設定します。 、およびvirtualenvを構成し、プロジェクトディレクトリに移動するときにvenvを自動ソースします。 このチュートリアルを終了するまでに、有効なバージョンのPythonをインストールし、プロジェクトごとに仮想環境をセットアップして構成し、混乱から正気を取り戻すことができるようになります。

前提条件

両方をインストールします pyenvdirenv 経由 homebrew インストールプロセスを容易にするため。 開始する前に、 homebrew をまだインストールしていない場合は、インストールしてください。

pyenvでの作業

まず、pyenvの操作方法を説明します。

pyenvのインストール

はじめに、インストールします pyenv 自作で、必要なものを追加します pyenv 私たちへの初期化 ~/.bashrc ファイル。

  1. brew install pyenv
  2. echo 'eval "$(pyenv init -)"' >> ~/.bashrc # initialize pyenv on new shells
  3. source ~/.bashrc # reinitialize bashrc to reflect changes in your current shell

インストールしたら、少し時間を取って、環境がどのように見えるかを調べてください。 新しいシステムでは、次のようなものが表示されます。

  1. which pyenv
Output
/usr/local/bin/pyenv
  1. pyenv versions
Output
* system
  1. which pip
Output
/usr/local/bin/pip
  1. which python
Output
/usr/local/bin/python

これはかなり標準的なスナップショットです。 実行すると python version、あなたは気付くでしょう * system、参照が示すように、これはシステムのPythonバージョンです。 アスタリスクは、 ${PATH}. 経験則として、システムのバイナリはそのままにしておくことをお勧めします。 あなたがPythonのバージョンのリストを見たい場合 pyenv あなたのためにインストールすることができます、使用 pyenv install --list.

  1. pyenv install 2.7.15
  2. pyenv install 3.7.0
  3. pyenv versions
Output
* system (set by /Users/iamjohnnym/.pyenv/version) 2.7.15 3.7.0

基本要件の構成

それでは、アップグレードしましょう pip 可能性があるので、古いバージョンをインストールしました。 次のコマンドは、インストールされているバージョンをループして更新します pip 最新に。

for VERSION in $(pyenv versions --bare) ; do
  pyenv shell ${VERSION} ;
  pip install --upgrade pip ;
done

目的のワークフローのために、インストールします py2venv 私たちのために Python 2.x 方法を模倣できるようにバージョン python 3.x virtualenvsをインストールします。 python -m venv .venv.

for VERSION in $(pyenv versions --bare | egrep '^2.') ; do
  pyenv shell ${VERSION} ;
  pip install py2venv ;
done

グローバルPythonバージョンの設定

持っていても pyenv インストールしても、デフォルトで system. これを変更するには、 python 3.7.0 グローバルバージョンとして:

  1. pyenv global 3.7.0
  2. pyenv versions
Output
system 2.7.15 * 3.7.0 (set by /Users/iamjohnnym/.pyenv/version)
  1. which python
Output
/Users/iamjohnnym/.pyenv/shims/python

私たちは持っている pyenv セットアップと機能。 に移りましょう direnv.

direnvの操作

direnv は、次のような機能が必要な任意のディレクトリに配置されるファイルを作成できる便利なユーティリティです。 .bashrc. このファイルを使用してディレクトリに入ると、シェルが自動的にファイルを実行します。 機能は無限ですが、この投稿の目的のために、ファイルに基づいてPythonvirtualenvを構成するためにそれを使用します .python-version それから私たちのためにそれをアクティブにします。 目的は、シームレスな開発フローを作成することです。 virtualenvsを手動で構成またはアクティブ化することを心配する必要はありません。 あなたのコンピュータにあなたのために仕事をさせてください。

direnvのインストール

インストールは自作で簡単です:

  1. brew install direnv

direnv これでインストールされ、悪用の準備が整いました。 サンプルプロジェクトを試してみましょう。

新しいプロジェクトの作成

プロジェクトを始めましょう。 新しいディレクトリを作成し、ローカルのPythonバージョンを設定し、 .envrc ファイルを作成し、アクティブ化します。

  1. mkdir -p ~/python-projects/pyenv-tutorial
  2. cd $_ # if you're unaware, $_ will execute the last argument of your command
  3. pwd
Output
/Users/iamjohnnym/ python-projects/pyenv-tutorial
  1. pyenv local 3.7.0
  2. cat .python-version
Output
3.7.0

環境ファイルの構成

この時点で、作成する準備が整いました .envrc ファイル。 お気に入りのエディターを使用して、そのファイルを作成し、次のコンテンツを追加します。

# check if python version is set in current dir
if [ -f ".python-version" ] ; then
    if [ ! -d ".venv" ] ; then
        echo "Installing virtualenv for $(python -V)"
        # if we didn't install `py2venv` for python 2.x, we would need to use
        # `virtualenv`, which you would have to install separately.
        python -m venv .venv
    fi
    echo "Activating $(python -V) virtualenv"
    source .venv/bin/activate
fi
# announce python version and show the path of the current python in ${PATH}
echo "Virtualenv has been activated for $(python -V)"
echo "$(which python)"

ファイルを保存します。 このようなシェルエディタを介してこれを行った場合 vim. 次のメッセージが表示されます。 direnv: error .envrc is blocked. Run direnv allow to approve its content. これはファイルの自動実行を防ぐためのセキュリティ機能であるため、心配する必要はありません。 このファイルが変更されるたびに、再度自動実行する前に手動で承認する必要があります。 有効にするには、次のように入力します direnv allow プロジェクトディレクトリから。

  1. direnv allow
Output
direnv: loading .envrc Installing virtualenv for Python 3.7.0 Activating Python 3.7.0 virtualenv Virtualenv has been activated for Python 3.7.0 /Users/iamjohnnym/.personal/tutorials/pyenv-direnv/.venv/bin/python direnv: export +VIRTUAL_ENV ~PATH

結論

これで、さまざまなPythonバージョンとプロジェクトの依存関係を管理するために必要なツールが手に入りました。

モバイルバージョンを終了