はじめに
VMインスタンス立てる度にもう死ぬほど毎回初期設定するんで、
毎回環境汚さないためにpyenv+venvを入れるんですけど、
必ず間違った情報がQiitaには出てくるので、ここに新しくメモします。
VMを立ち上げたらすること
pyenvを実行するにはsudo権ありで、まずこちらを実行する必要があります。
(情報源はこちら)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
pyenvを入れる
pyenvとは、pythonをsystemベースで管理するのではなく、
個人のディレクトリごとでパッケージ管理するためのものです。
具体的な仕組みは~/.pyenv配下にpython関連のシステムをInstallしてあげ、
その上pythonコマンドを打つとそこをちゃんと読んでくれるようにしてくれるシステムです。
ちなみにpython2コマンドには対応してませんのでご注意を。
pyenvをインストールする
Ubuntuの場合、以下をコピペして入力すればOKです。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
exec "$SHELL"
yyuu/pyenvでも~/.bash_profile
でもありません。ubuntuはこれです。
DebianとかCentOSは知りません。
公式にもそう書かれています。
ちなみにZshを使いたい方は~/.zshenv
に書くそうです。
pyenvで新しいPython環境を入れる
pyenv install 3.6.9
pyenv global 3.6.9
pip install --upgrade pip
これで個別環境のpythonが出来上がります。pipでもなんでも好きにして大丈夫です。
venvを入れる
venvとは、Python公式のパッケージ管理ツールです
pipで入れるmoduleとかをフォルダごとに管理してくれます。
python -m venv ~/env/hoge
pipで何か新しく入れる時はvenv状態で入れるとクリーンで管理がしやすいです。
. ~/env/hoge/bin/activate
とすることで、venv環境が構築できます。
これでフォルダごとに完全に独立したpip環境で構築することができます。
pyenvとvenvの違い
pyenvで作られたpythonのバージョンでvenvを使用すると、
pyenvで作られたpythonバージョンの仮想環境ができます。
で、activate
した環境でwhich python
すると、
なんとvenvで指定したフォルダが出てきます。
つまり、pyenvは好きなpythonバージョンを入れることに特化していて、
venvは今のPythonバージョンで好きなパッケージを入れることに特化しています。
ここが大きな違いですね。
おわりに
くそ殴り書きメモなんですが、毎回Ubuntuで建てる人はブクマかストックしておくと便利かと
いいねしていただければ、正しい情報が伝わりやすいかと思うので、
共感していただければいいねください。ありがとうございます。