Python linux多版本共存以及虛擬環境管理
此時需要在系統中安裝多個Python,但又不能影響系統自帶的Python,即需要實現Python的多版本共存。 pyenv 就是這樣一個Python版本管理器。
安裝pyenv
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc $ exec $SHELL -l
安裝Python
檢視可安裝的版本
$ pyenv install --list
該命令會列出可以用pyenv安裝的Python版本,僅列舉幾個:
.7.8 # Python 2最新版本 .4.1 # Python 3最新版本 anaconda-4.0.0 # 支援Python 2.6和2.7 anaconda3-4.0.0 # 支援Python 3.3和3.4
其中形如 x.x.x 這樣的只有版本號的為Python官方版本,其他的形如 xxxxx-x.x.x 這種既有名稱又有版本後的屬於“衍生版”或發行版。
安裝Python的依賴包
在安裝Python時需要首先安裝其依賴的其他軟體包,已知的一些需要預先安裝的庫如下。
在CentOS/RHEL/Fedora下:
sudo yum install readline readline-devel readline-static sudo yum install openssl openssl-devel openssl-static sudo yum install sqlite-devel sudo yum install bzip2-devel bzip2-libs
安裝指定版本
使用如下命令即可安裝python 3.4.1:
$ pyenv install 3.4.1 -v
該命令會從github上下載python的原始碼,並解壓到/tmp目錄下,然後在/tmp中執行編譯工作。若依賴包沒有安裝,則會出現編譯錯誤,需要在安裝依賴包後重新執行該命令。
如果網路不太好,用pyenv下載會比較慢,可以先執行該命令,然後到 ~/.pyenv/cache 目錄下檢視要下載的檔案的檔名,然後自己到官方網站下載,並將檔案放在 ~/.pyenv/cache 目錄下(~/.pyenv/cache/ 一般需要手動建立)。pyenv會檢查檔案的完整性,若確認無誤,則不會再重新下載。
對於科研環境,更推薦安裝專為科學計算準備的Anaconda發行版, pyenv install anaconda-4.0.0 安裝Python 2.x版本, pyenv install anaconda3-4.0.0 安裝Python 3.x版本;
更新資料庫
安裝完成之後需要對資料庫進行更新:
$ pyenv rehash
檢視當前已安裝的python版本
$ pyenv versions
* system (set by /home/seisman/.pyenv/version) .4.1
其中的星號表示當前正在使用的是系統自帶的python。
設定全域性的python版本
$ pyenv global 3.4.1 $ pyenv versions system * 3.4.1 (set by /home/seisman/.pyenv/version)
當前全域性的python版本已經變成了3.4.1。也可以使用 pyenv local 或 pyenv shell 臨時改變python版本。
確認python版本
$ python
Python 3.4.1 (default, Sep 10 2014, 17:10:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
使用python
- 輸入 python 即可使用新版本的python;
- 系統自帶的指令碼會以 /usr/bin/python 的方式直接呼叫老版本的python,因而不會對系統指令碼產生影響;
- 使用 pip 安裝第三方模組時會安裝到 ~/.pyenv/versions/3.4.1 下,不會和系統模組發生衝突。
- 使用 pip 安裝模組後,可能需要執行 pyenv rehash 更新資料庫;
- yenv version #顯示當前使用的
- Python pyenv which python #顯示當前Python的安裝路徑
- pyenv global <version> #設定預設的Python版本
- pyenv local <version> #在當前路徑建立一個.python-version,以後進入這個目錄自動切換為該版本
- pyenv shell <version> #在當前shell的session中啟用某個Python版本,優先順序高於global,local
參考https://github.com/yyuu/pyenv
虛擬環境的搭建
1.1.1介紹
virtualenv用於建立獨立的Python環境,多個Python相互獨立,互不影響,它能夠:
1. 在沒有許可權的情況下安裝新套件
2. 不同應用可以使用不同的套件版本
3. 套件升級不影響其他應用
1.1.2安裝
sudo apt-get install python-virtualenv
1.1.3 使用方法
virtualenv [虛擬環境名稱]
如,建立**ENV**的虛擬環境
virtualenv ENV
預設情況下,虛擬環境會依賴系統環境中的site packages,就是說系統中已經安裝好的第三方package也會安裝在虛擬環境中,如果不想依賴這些package,那麼可以加上引數 --no-site-packages建立虛擬環境
virtualenv --no-site-packages [虛擬環境名稱]
啟動虛擬環境
cd ENV
source ./bin/activate
注意此時命令列會多一個(ENV),ENV為虛擬環境名稱,接下來所有模組都只會安裝到該目錄中去。
退出虛擬環境
deactivate
在虛擬環境安裝Python套件
Virtualenv 附帶有pip安裝工具,因此需要安裝的套件可以直接執行:
pip install [套件名稱]
如果沒有啟動虛擬環境,系統也安裝了pip工具,那麼套件將被安裝在系統環境中,為了避免發生此事,可以在~/.bashrc檔案中加上:
export PIP_REQUIRE_VIRTUALENV=true
或者讓在執行pip的時候讓系統自動開啟虛擬環境:
export PIP_RESPECT_VIRTUALENV=true
1.2 Virtualenvwrapper
1.2.1介紹
Virtaulenvwrapper是virtualenv的擴充套件包,用於更方便管理虛擬環境,它可以做:
1. 將所有虛擬環境整合在一個目錄下
2. 管理(新增,刪除,複製)虛擬環境
3. 切換虛擬環境
4. ...
1.2.2 安裝
sudo easy_install virtualenvwrapper
此時還不能使用virtualenvwrapper,預設virtualenvwrapper安裝在/usr/local/bin下面,實際上你需要執行virtualenvwrapper.sh檔案才行,先別急,開啟這個檔案看看,裡面有安裝步驟,我們照著操作把環境設定好。
1.建立目錄用來存放虛擬環境
mkdir $HOME/.virtualenvs
2.在~/.bashrc中新增行: export WORKON_HOME=$HOME/.virtualenvs
3.在~/.bashrc中新增行:source /usr/local/bin/virtualenvwrapper.sh
4.執行: source ~/.bashrc
1.2.3 使用
此時virtualenvwrapper就可以使用了。
點選(此處)摺疊或開啟
1. 列出虛擬環境列表
2. workon
3.
4. 也可以使用
5. lsvirtualenv
6.
7. 新建虛擬環境
8. mkvirtualenv [虛擬環境名稱]
9.
10. 啟動/切換虛擬環境
11. workon [虛擬環境名稱]
12.
13. 刪除虛擬環境
14. rmvirtualenv [虛擬環境名稱]
15.
16. 離開虛擬環境
17. deactivate