#はじめに
初学者が書いていますので、誤っている箇所などあればご指摘願います。
###前提
・macOS Catalina
・pyenv
とpyenv-virtualenv
を使用して環境構築する
・zsh
使用
###参考記事
pyenv と pyenv-virtualenv で環境構築
pyenvとpyenv-virtualenvの自分流使い方
pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。
pyenv-virtualenvを使って都合のいいように Pythonパッケージ環境を行き来する話
#pyenv
###pyenvとは
Pythonのバージョンを複数インストールすることができ、バージョンを切り替えて使えるようになります。
###pyenvのインストール
ホーム画面で下記コマンドを実行します。
% git clone https://github.com/pyenv/pyenv.git ~/.pyenv
※git clone
ではなくbrew install
する方法もありますが、その場合は下記の.zshrc
に記載する内容が異なります。詳しくはpyenvのgithubをご覧下さい。
.zshrc
というファイルを編集するため、コマンドでファイルを開きます。
(zsh
ではなくbash
を使用されている方は編集ファイルが異なります。)
※公式のgithubだと.zshrc
ではなく.zprofile
を編集していますので、.zprofile
の方がいいかもしれません。
% vi .zshrc
ファイルに下記をそのままコピペします。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
↑HOMEとか編集する必要はありません。
シェルへ再ログインします。
% exec $SHELL
下記コマンドを実行すると、インストールできるversionがたくさん出てきます。
今回は3.9.6を使用します。
% pyenv install --list
~省略~
3.9.1
3.9.2
3.9.3
3.9.4
3.9.5
3.9.6
3.10.0b4
3.10-dev
3.11-dev
activepython-2.7.14
activepython-3.5.4
activepython-3.6.0
anaconda-1.4.0
~省略~
下記コマンドでインストールします。
% pyenv install 3.9.6
% pyenv versions
* system (set by /Users/YOUR_NAME/.pyenv/version)
3.9.6
3.9.6のインストールができたので、pyenv global
コマンドでsystem
から3.9.6
へ切り替えます。
※特定ディレクトリ以下のバージョンを変えたい場合は、global
ではなくlocal
コマンドを使います。(競合した場合、global
よりlocal
が優先されます。)
% pyenv global 3.9.6
もう一回確認します。
% pyenv versions
system
* 3.9.6 (set by /Users/YOUR_NAME/.pyenv/version)
切り替えができてます!
% python --version
上記コマンドでも確認します。
Python 3.9.6
問題なさそうです!
もし、デフォルトで入ってるバージョン(2.X.X)が表示されてしまった場合は、pyenv
の環境がうまくいかなかったか、シェルの読み込みに失敗している可能性があります。
#pyenv-virtualenv
###pyenv-virtualenvとは
pyenv
のプラグインで、pyenv
上でvirtualenv
を使えます。
Pythonのバージョンが同じでも違う環境を作成することができます。
※virtualenv
とは違います。
virtualenv
の場合、activate
しないと環境が切り替わりません。
###pyenv-virtualenvのインストール
% git clone https://github.com/pyenv/pyenv-virtualenv.git ~/plugins/pyenv-virtualenv
※git clone
ではなくbrew install
する方法もあります。
.zshrc
に下記を記載します。
% vi .zshrc
eval "$(pyenv virtualenv-init -)"
% exec $SHELL
###新しいPython環境の作成
pyenv virtualenv <VERSION> <NAME>
とコマンドを打つことで、NAMEという新しい環境を作成できます。
今回はversion3.9.6のみインストールしているので、3.9.6の新しい環境をsampleという名前で作ります。
% pyenv virtualenv 3.9.6 sample
上記コマンドで、
3.9.6/envs/sample
とsample
の二つの環境?ができますが、pyenv-virtualenvのgithubを見ると、sampleの方を使うようですね。
新しい環境(sample)で作業をしていきたいので、下記コマンドを実行します。
% pyenv local sample
% pyenv versions
system
3.9.6
3.9.6/envs/sample
* sample (set by /Users/YOUR_NAME/.python-version)
#pip
切り替えが完了したので、必要なライブラリ等をpipコマンドでインストールしていきましょう!
さっそくDjangoをインストールしてみます。
% pip install django
インストールができました!
ちなみに、pip list
でインストールしたものを確認できます。
#pyenv global X.X.Xをしても何も変わらない時
上記作業が終わって、pyenv global X.X.X
をしたのですが、実行されませんでした。
過去に同じディレクトリ内でPythonの環境を設定してしまうと.python-version
というファイルが出来てしまうようです。
% rm ~/.python-version
上記コマンドを実行してファイルを削除することで、pyenv global X.X.X
ができました!
#最後に
この記事をまとめ始めてから、pyenv-virtualenv
とvirtualenv
は違うものだということが分かりました。
アウトプット大事ですね。
また今後の課題として、venv
とpipenv
が何なのかを理解できるようになりたいなと思っています。今は正直よく分かってないです。
Python3.3以降はvenv
が標準化されていて、virtualenv
は使う必要がなくなったというのは理解しました。
pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。
2021/8/11
@Msksgm さんからコメントをいただき、大幅に修正させていただきました!
コメントありがとうございました!