宅吉便


pyenv: Python虛擬環境絕佳利器

python

pyenv 是一個好用的Python 版本管理器
作者 是一個日本人來著的
自從有了它以後
身體都變得很健康
考試也都考一百分了呢

不過
Windows的用戶就無福消受了
因為 pyenv 並沒有 Windows的版本
現在不會支援
以後應該也不會支援
這個需求其實在2013年就被人提過
不過作者很有霸氣地回應

I'm no longer using Windows. I don't like to waste my time with such thing.

然後他被一堆人按了 dislike
但同時也一堆人按了 like

不管怎麼樣
Windows上面一定也有類似好用的套件啦


pyenv 從安裝到使用基本上可以說是非常無腦
好用到幾乎沒有學習曲線
而我最常用到的指令不過有就以下三個

pyenv install 
pyenv virtualenv 
pyenv local

這樣基本上就幫我搞定所有 Python 不同版本開發的問題了

廢話不多說
馬上來看看基本教學


事前準備

Ubuntu/Debian上必須先安裝以下套件 來源

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

CentOS 6

sudo yum install -y  gcc gcc-c++ make git patch openssl-devel zlib-devel readline-devel sqlite-devel bzip2-devel


安裝

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

OS X用戶也可以透過 Homebrew 來安裝

brew install pyenv
brew install pyenv-virtualenv

設定環境變數

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

如果您是使用 bash 請把以上三行貼到 ~/.bashrc
若是使用 zsh 則是貼到 ~/.zshrc

注意: 若是在 OS X 下使用 bash,記得是要貼到 ~/.bash_profile 而不是 ~/.bashrc 喔!


使用oh-my-zsh的朋友可以直接把 pyenv 加在 ~/.zshrc 的 plugin裡面,即
plugin=(pyenv)

接者, 重新啟動shell

exec $SHELL

這樣就設定完成了!


使用

安裝特定版本(以3.4.3為例)

pyenv install 3.4.3

設定虛擬環境(名稱自行決定,這邊以 foo 為例)

pyenv virtualenv 3.4.3 foo

為特定資料夾設定該虛擬環境

首先,進入在資料夾(以FooProject為例)

cd FooProject

設定自動啟動環境(以後進入到該資料夾,自動啟動該虛擬環境)

pyenv local foo

執行完以上指令後,shell prompt前會有括號,括號裡面為 該資料夾的已啟動的虛擬環境名稱,如下

(foo) test@localhost:~/FooProject$

最後
我覺得滿重要的一點是
假如今天要設定一個 crontab
那 Python 的路徑應該要給什麼?

如大家所知,crontab絕對路徑是最安全的
所以我們一定要知道這些透過 pyenv 安裝的 Python
都跑去哪兒了

他們其實都住在您的家目錄下面:

~/.pyenv/versions/

以剛剛我們所建立的 foo 來看
他的 bin 就會在這邊:

/home/test/.pyenv/versions/foo/bin/python