pyenv と pyenv-virtualenv で環境構築の記事の環境をUbuntu for Windows上で作る用備忘録

もともとUbuntu for Windowsの環境に入ってないものをインストールするだけだけど。

環境

$ uname -a
Linux SDI17-0023 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

install

shellを作ったのでさくっとやりたい方はこちらから、shellでは以下作業を行います。

必要なパッケージ類をインストールします。(pyenvでpythonをinstallするときに必要になります)

$ sudo apt-get install build-essential zlib1g-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev tk-dev python-tk python3-tk

pyenvの本体を取得

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

~/.bash_profileを作成します。

~/.bash_profile
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

test -r ~/.bashrc && . ~/.bashrc

pyenv-virtualenvをクローン

$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

pyenv pyenv-virtualenvの基本的な使い方

各pythonのインストール

$ pyenv install -l #install可能な一覧
$ pyenv install 3.6.5 #任意のinstallしたいバージョン
$ pyenv versions #installされているバージョン一覧が表示される
$ pyenv version #現在利用しているバージョン

環境の指定方法

# global,local,shellの3種類
# 優先順位 shell→local→global

$ pyenv global 3.6.5 #デフォルトで利用するバージョンを指定
$ pyenv version
3.6.5 (set by /home/myuser/.pyenv/version) #/home/myuser配下で管理されてる。

$ cd /path_to_project/ #任意のディレクトリ上で…
$ pyenv local 3.6.5 #現在のディレクトリ配下で利用するバージョンを指定
$ pyenv version
3.6.5 (set by /path_to_project/.python-version) #対象のプロジェクト配下で管理さrている。

$ pyenv shell 3.6.5 #現在のshellで利用されるバージョンを指定
$ pyenv version
3.6.5 (set by PYENV_VERSION environment variable)

これだけだとinstallされたバージョン毎でpipでinstallする
moduleが共有されている状態なので、プロジェクト単位でmoduleの管理ができない。
そこでvirtualenvの出番。

virtualenvによる環境構築&環境の指定方法

$ cd /path_to_project/
$ pyenv virtualenv 3.6.5 new_3.6.5 #python3.6.5でモジュールが全くinstallされてない環境ができあがる
$ pyenv local new_3.6.5 #環境を利用するには上のglobal,local,shellで指定。プロジェクトでの管理ならlocalでやるのがよさそう。
(new_3.6.5)$ #virtualenv環境を指定するとconsoleの先頭に環境名表示される。
$ pyenv version
new_3.6.5 (set by /path_to_project/.python-version)

#あとはpipで任意のモジュールを追加すればOK

この状態でpythonコマンドが使えない。python3.6にリダイレクトされてそんなものはないとなる…python3で起動すればいいみたい。ちょっと不便だね…

(new_3.6.5)$ python
pyenv: python3.6: command not found

The `python3.6` command exists in these Python versions:
  3.6.5

(new_3.6.5)$ python3
Python 3.6.5 (default, Apr  6 2018, 12:10:51)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

$ pyenv virtualenv --system-site-packages 3.6.5 new_3.6.5_co #ある環境を引き継ぐときは --system-site-packeges optionを利用する。
```

環境の削除

$ pyenv versions # virtualenv環境も、インストールした素の?pythonも表示される。

$ pyenv uninstall new_3.6.5
pyenv-virtualenv: remove /home/myuser/.pyenv/versions/3.6.5/envs/new_3.6.5? y #yで削除
# 環境を削除しても、ただしpyevn local指定したディレクトリには以下ゴミファイルがのこってるので別途削除したほうがよさそう。
$ cat /path_to_projedt/.python-version
new_3.6.5
$ rm /path_to_projedt/.python-version

参考にさせていただいたサイト

https://qiita.com/banaoh/items/00aea13fe045fab7e8ba
https://qiita.com/Kodaira_/items/feadfef9add468e3a85b

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.