Pythonで自然言語処理や機械学習の勉強をしています。
Pythonの仮想環境について調べた結果を記録します。
環境
- windows 10 Home
- WSL2 +Ubuntu 18.04
- Python 3.6.9 → Python 3.9.4
- Visual Studio Code
仮想環境について調べた動機
現在、WSL(ubuntu18.04)にもともと入っていたPython3.6.9を使っており、
3.6のサポート終了が近づいているのでバージョンアップしようと思ったが、
環境を切り分ける方がいい気がしたので少し調べた。
各ツールについて知ったこと等のメモ
pyenv: 異なるバージョンのPythonを共存させ、切り替えて使つためのツール。
pyenvは gitからコピーさせていただく。
pythonインストール時に必要なツールをaptで入れる。
環境変数の設定が必要(.profile, .bashrc等に書く)。
#インストール時に参考にさせていただいたサイト:
https://www.python-izm.com/tips/pyenv/
https://aadojo.alterbooth.com/entry/2020/08/19/095654
https://home.hirosaki-u.ac.jp/heroic-2020/970/
venv: 開発プロジェクトごとに環境(利用パッケージ)を分けて管理するのに使う。
virtualenv: venvと同じようなことができるが、pytyon2系でも使えるらしい。venvより古くからあるらしい。
pip: パッケージをインストールするためのツール。インストールしたものをRequirement.txtというファイルに記録して、別の環境で再現するのに使える。
pipenv: パッケージの管理と仮想環境管理が両方行えるらしい。pipの代わりに使えるらしい。Requirement.txtの代わりにPipfileとPipfile.lockという2つのファイルに記録し、必須のものと依存しているものを分けて記録できるとのこと。
現時点で利用する環境
pyenv+venv+pipで管理しようと思います。
理由:
- pythonのバージョンアップをしてユーザー環境にpythonを置くのが当初の目的なので、
pyenvで新バージョンを入れるのが良いと思った。 - 素人が勉強・練習するだけなので環境を分ける必要があるかどうかわからなかったが、
後でリセットしやすいように仮想環境を作って使うことにした。そのためにvenvを使った。
virtualenvの後継がvenvとのことで、そちらにした。 - pipenvだけでpyenv+venv+pipと同じ事ができる様子なのだが、
先にpyenvを入れてしまっていて、venvとpipは入っていたので、上記構成で行くことにした。
Visual Studio Codeでの利用
venvで作った環境(フォルダー)を開いて、インタプリターとしてvenvの中にあるpythonを指定することで、"Hello python"が動いた。VS codeのターミナルでは(venv)という表示が出て、仮想環境のshellで動いている様子だった(特に設定しなくてもそうなった)。