29
30

More than 3 years have passed since last update.

pyenvとvenvの必要最小限の利用方法

Posted at

はじめに

Python+Djangoで開発をしているのですが、複数案件を担当していると案件によってPythonやDjangoやその他のライブラリのバージョンが異なります。
場合によっては、同じPythonのバージョンでも異なるライブラリのバージョンが異なるため、pyenvとvenvによるバージョン管理は非常に役に立ちっています。今回は必要最小限の機能に絞って利用方法を記載してみます。

実行環境

OS:macOS Big Sur(version 11.2.2)
シェル:zsh
or
OS:CentOS7
シェル:bash

pyenv

pyenvを利用することで様々なバージョンのPythonを利用することが可能になります。
本記事の記載時点だと2.1.3~3.9.1までインストール可能です。

pyenvのインストール

macの場合はHomebrewを利用してインストールできるようです。

$ brew install pyenv

Linuxの方などはgitで持ってくることができます。

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv

シェルの設定ファイル編集

自身のログインシェルをecho $SHELLで確認しておきます。
zsh→.zshrc(.zsh_profile)
bash→.bash_profile
に以下を記載しています。vimで直接記載しても良いですが今回は簡略化のためにechoを利用します。

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc

最後に設定ファイル反映を反映します。

$ source .zshrc   #bashの方は .bash_profile

pyenvで必要なバージョンのPythonをインストール

これまでの設定でpyenvが利用できるため、利用可能なPythonのバージョンを調べます。

$ pyenv install --list

○.○.○とリストに表示されるものがインストール可能です。
利用したいバージョンのpyenvをインストールします。

$ pyenv install 3.9.1   # 今回は3.9.1をインストール

pyenvのバージョン切替

現在のバージョンを調べます。

$ pyenv versions

systemとインストールされたバージョンが表示されます。
「*」の横に記載のバージョンが現在のディレクトリで利用されるものです。

* system (set by /○○/○○.pyenv/version)
  3.9.1

利用するPythonのバージョンを切替します。
ディレクトリに応じて細かく分けたりもできますが、venvの利用が主目的のため今回は割愛。

$ pyenv global 3.9.1

もう一度pyenv versionsで確認するとデフォルトバージョンが切り替わっています。(Pythonをインタプリタで起動しても確認できます)

  system 
* 3.9.1 (set by /○○/○○.pyenv/version)

これで利用したいバージョンでvenv仮想環境を作成する準備が整いました。

venv環境の作成

venvはPython3系ではデフォルトで利用可能なので特にインストールなどは必要ありません(2系を利用されている場合はvirtualenvのインストールすることで似たようなバージョン管理が可能になります)。
仮想環境を作成したいディレクトリで以下を実行します。

$ python -m venv venv_project   #venv_projectは任意のプロジェクト名

配下にvenv_projectディレクトリができるのでcd venv_projectで移動し、仮想環境をアクティベート。

$ source bin/activate

実行に成功するとホスト名の前に表示されます。これで仮想環境にはいっています。

(venv_project)hostname$ 

仮想環境をアクティベートすることで、これからpipでインストールするライブラリはローカルの環境から分離して独立して管理することが可能です。
あとは自由に必要なバージョンのライブラリをインストールして利用してください。

最後にローカルに環境に戻る際はアクティベートを解除します。

$ deactivate   # プロジェクトディレクトリ配下でなくても実行可能

以上で最低限のpythonでのバージョン管理ができそうです。

さいごに

pyenvもvenvもちゃんと理解すればもっと便利に利用できそう。
ただ、今回の手順を踏めばローカル環境は元の状態を保てるためバージョンでの衝突は防げるのではないかと思います。
どなたかの参考になりましたら幸いです。

参考ページ

29
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
30