使用工作站時常會遇到想要自行安裝 Python 套件,結果卻沒有管理權限的問題。雖然可以自行在 local 安裝套件,或者是乾脆自行安裝 local 版的 Python,但設置的程序稍微有點麻煩,而且遇到想要同時使用多種版本的 Python 時,設置就更複雜了。
遇到這種情形的時候,建立 Python 的 virtual environment 就可以方便的使用多個不同版本與環境的 Python。
pyvenv
pyvenv 是在 Python 3.3 後新加入官方 Python 發行版的一個 module,可以讓使用者建立自己的 virtual environment。雖然很可惜的,Debian 系的 OS 因為 bug 732703 所以暫時無法使用。不過還是介紹一下他的用法:
-
在 ENV_DIR 建立 virtual environment,
--system-site-packages
參數則是讓系統安裝的套件也能被這個環境使用,3.4 則可選擇不同版本:pyvenv-3.4 [--system-site-packages] ENV_DIR
-
啟用特定的 virtual environment:
source ENV_DIR/bin/activate
這時你就會發現在 prompt 前多了個名字,然後直接用 pip 安裝套件就會裝到這個 local 的 environment 了:
(name)$
以後要啟用某個 environment 時都要重新用 2 提到的方法啟用。
virtualenv
如果工作站上有安裝 virtualenv 的話,也可以用這個套件達到相同功能,好處是 Python 2 也可以用。
-
在 ENV_DIR 建立 virtual environment,
--system-site-packages
參數則是讓系統安裝的套件也能被這個環境使用,python3.4 則可選擇不同版本(包含 python2):virtualenv [--system-site-packages] -p python3.4 ENV_DIR
-
啟用特定的 virtual environment:
source ENV_DIR/bin/activate
這時你就會發現在 prompt 前多了個名字,然後直接用 pip 安裝套件就會裝到這個 local 的 environment 了:
(name)$
使用
which
可以看到 python 路徑:which python ENV_DIR/bin/python which pip ENV_DIR/bin/pip
注意到如果當初指定用 python3.4 的話,這裡雖然下的是 python,其實也是 3.4 版。以後要啟用某個 environment 時都要重新用 2 提到的方法啟用。
如果有裝 virtualenvwrapper 的話其實還有更方便的方法,可以自行參考文件。
Local Packages
如果實在是無法建立 virtual environment 的話,只能使用舊方法來安裝 local 套件了,首先在 .bashrc
加入對應的參數,使得執行 Python 時會載入 local 套件:
alias python3="PYTHONPATH=$PYTHONPATH:$HOME/.local/lib/python3.4/site-packages python3"
alias python="PYTHONPATH=$PYTHONPATH:$HOME/.local/lib/python2.7/site-packages python"
其中各版本的路徑可自行調整。
接下來安裝套件時都加上 –user 參數即可,例如:
pip3 install --user flask
python3.4 setup.py install --user
pip2 install --user flask
python2 setup.py install --user