###序章
始めたばかりでも、経験豊富なPython開発者でも、Python環境の管理は面倒で面倒な作業であることに気付いたかもしれません。 Pythonのバージョン、ライブラリ、およびさまざまな依存関係の管理は、オブジェクトが他のパックにヒットしないシャッフルボードをプレイするようなものです。 そうした場合、パックが望まない場所に飛んでいくというカスケード効果の可能性がすぐに続きます。
このチュートリアルでは、Python環境を管理するために pyenv をインストールし、 direnv をインストールして、プロジェクトのvirtualenvを自動構成およびソースし、プロジェクトのグローバルPythonバージョンとローカルPythonバージョンを設定します。 、およびvirtualenvを構成し、プロジェクトディレクトリに移動するときにvenvを自動ソースします。 このチュートリアルを終了するまでに、有効なバージョンのPythonをインストールし、プロジェクトごとに仮想環境をセットアップして構成し、混乱から正気を取り戻すことができるようになります。
前提条件
両方をインストールします pyenv
と direnv
経由 homebrew
インストールプロセスを容易にするため。 開始する前に、 homebrew をまだインストールしていない場合は、インストールしてください。
pyenvでの作業
まず、pyenvの操作方法を説明します。
pyenvのインストール
はじめに、インストールします pyenv
自作で、必要なものを追加します pyenv
私たちへの初期化 ~/.bashrc
ファイル。
- brew install pyenv
- echo 'eval "$(pyenv init -)"' >> ~/.bashrc # initialize pyenv on new shells
- source ~/.bashrc # reinitialize bashrc to reflect changes in your current shell
インストールしたら、少し時間を取って、環境がどのように見えるかを調べてください。 新しいシステムでは、次のようなものが表示されます。
- which pyenv
Output/usr/local/bin/pyenv
- pyenv versions
Output* system
- which pip
Output/usr/local/bin/pip
- which python
Output/usr/local/bin/python
これはかなり標準的なスナップショットです。 実行すると python version
、あなたは気付くでしょう * system
、参照が示すように、これはシステムのPythonバージョンです。 アスタリスクは、 ${PATH}
. 経験則として、システムのバイナリはそのままにしておくことをお勧めします。 あなたがPythonのバージョンのリストを見たい場合 pyenv
あなたのためにインストールすることができます、使用 pyenv install --list
.
- pyenv install 2.7.15
- pyenv install 3.7.0
- 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
グローバルバージョンとして:
- pyenv global 3.7.0
- pyenv versions
Output system
2.7.15
* 3.7.0 (set by /Users/iamjohnnym/.pyenv/version)
- which python
Output/Users/iamjohnnym/.pyenv/shims/python
私たちは持っている pyenv
セットアップと機能。 に移りましょう direnv
.
direnvの操作
direnv
は、次のような機能が必要な任意のディレクトリに配置されるファイルを作成できる便利なユーティリティです。 .bashrc
. このファイルを使用してディレクトリに入ると、シェルが自動的にファイルを実行します。 機能は無限ですが、この投稿の目的のために、ファイルに基づいてPythonvirtualenvを構成するためにそれを使用します .python-version
それから私たちのためにそれをアクティブにします。 目的は、シームレスな開発フローを作成することです。 virtualenvsを手動で構成またはアクティブ化することを心配する必要はありません。 あなたのコンピュータにあなたのために仕事をさせてください。
direnvのインストール
インストールは自作で簡単です:
- brew install direnv
direnv
これでインストールされ、悪用の準備が整いました。 サンプルプロジェクトを試してみましょう。
新しいプロジェクトの作成
プロジェクトを始めましょう。 新しいディレクトリを作成し、ローカルのPythonバージョンを設定し、 .envrc
ファイルを作成し、アクティブ化します。
- mkdir -p ~/python-projects/pyenv-tutorial
- cd $_ # if you're unaware, $_ will execute the last argument of your command
- pwd
Output/Users/iamjohnnym/ python-projects/pyenv-tutorial
- pyenv local 3.7.0
- cat .python-version
Output3.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
プロジェクトディレクトリから。
- direnv allow
Outputdirenv: 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バージョンとプロジェクトの依存関係を管理するために必要なツールが手に入りました。