1. 程式人生 > >Python linux多版本共存以及虛擬環境管理

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