LoginSignup
14
13

More than 3 years have passed since last update.

【永久保存版】pyenv+venvをubuntuに入れる【もう迷わない】

Last updated at Posted at 2019-12-14

はじめに

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環境を入れる

pythonを入れる
pyenv install 3.6.9
pyenv global 3.6.9
pip install --upgrade pip

これで個別環境のpythonが出来上がります。pipでもなんでも好きにして大丈夫です。

venvを入れる

venvとは、Python公式のパッケージ管理ツールです
pipで入れるmoduleとかをフォルダごとに管理してくれます。

venv
python -m venv ~/env/hoge

pipで何か新しく入れる時はvenv状態で入れるとクリーンで管理がしやすいです。

venv_activate
. ~/env/hoge/bin/activate

とすることで、venv環境が構築できます。
これでフォルダごとに完全に独立したpip環境で構築することができます。

pyenvとvenvの違い

pyenvで作られたpythonのバージョンでvenvを使用すると、
pyenvで作られたpythonバージョンの仮想環境ができます。

で、activateした環境でwhich pythonすると、
なんとvenvで指定したフォルダが出てきます。

つまり、pyenvは好きなpythonバージョンを入れることに特化していて、
venvは今のPythonバージョンで好きなパッケージを入れることに特化しています。

ここが大きな違いですね。

おわりに

くそ殴り書きメモなんですが、毎回Ubuntuで建てる人はブクマかストックしておくと便利かと
いいねしていただければ、正しい情報が伝わりやすいかと思うので、
共感していただければいいねください。ありがとうございます。

14
13
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
14
13