python虛擬環境virtualenv的安裝與使用

若是咱們要同時開發多個應用程序,每一個應用可能須要各自擁有一套「獨立」的Python運行環境,咱們可使用virtualenv解決這個問題,它能夠爲一個應用建立一套「隔離」的Python運行環境。python

一. 安裝virtualenv 

sudo apt-get install python-virtualenv 
or
sudo easy_install virtualenv 

 

二. 建立環境

建立python2環境:git

virtualenv myenv

建立python3環境github

virtualenv -p /usr/bin/python3  myenv3

若是你的虛擬環境安裝庫的時候出問題,好比python3環境sql

須要安裝pip3shell

sudo apt-get install python3-pip

 

建立徹底隔離的Python環境,實質是建立了一個文件夾,咱們的操做都是在這個目錄裏面進行的。flask

建立的虛擬環境文件夾的位置在家目錄下,名爲myenvpython2.7

 默認狀況下,virtualenv會引用系統python環境中 site-­packages 中的庫,並將其複製到虛擬python環境的庫中。咱們能夠設置 --no-site-packages 參數取消對系統Python庫的引用,以此來建立一個徹底純淨的python環境。spa

virtualenv --no-site-packages myenv

 

myenv的lib/目錄下,即是咱們建立的python虛擬環境,這個默認的python版本由咱們的系統python環境決定,好比我本機的python環境爲python2.7,virtualenv便默認建立python2.7的環境。固然,咱們也能夠建立自定義版本的python虛擬環境,這在後文有介紹。  .net

三. 激活虛擬環境

cd ~/myenv/bin && source ./activate

 

咱們能夠看到在命令行的前面已經加上了咱們虛擬環境的名字「myenv」,表示當前環境是一個名爲myenv的Python虛擬環境。命令行

此時咱們即可以在這個虛擬環境中,進行相關操做了,好比安裝第三方庫。

咱們用pip安裝第三方庫shodan,而後在虛擬環境的myenv/lib/python2.7/site-packages目錄下,咱們能夠找到安裝好的庫。

四.使用Pyenv管理python版本

1.安裝 pyenv

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> /etc/profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> /etc/profile
echo 'eval "$(pyenv init -)"' >> /etc/profile

安裝完成之後,須要從新載入配置文件,或者退出之後從新登陸,以使/etc/profile中的配置生效。

 咱們能夠經過下面的命令驗證pyenv是否正確安裝以及獲取pyenv的幫助信息:

1.使用 pyenv

pyenv install
安裝一個 Python 版本,到 $PYENV_ROOT/versions 路徑下。

pyenv install -v 2.7.3

卸載 

pyenv uninstall 2.7.3

 

安裝python時會報錯,好比:

WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?

 

安裝相關依賴便可

apt-get install bzip2-devel bzip2-libs -y
apt-get install sqlite-devel -y
apt-get install openssl openssl-devel openssl-static -y apt-get install readline readline-devel readline-static -y

 

pyenv versions
# 查看當前 pyenv 可檢測到的全部版本,處於激活狀態的版本前以 * 標示。

$ pyenv versions
system
* 3.5.1 (set by /root/.pyenv/version) 3.5.1/envs/flask_py351 3.5.1/envs/pelican flask_py351 pelican

 

建立新的python環境,位於 ~/.pyenv/versions/

pyenv virtualenv 2.7.1 env271

切換到新的環境:$ pyenv activate env271
退回到系統環境:$ pyenv deactivate
刪除新建立的環境:$ rm -rf ~/.pyenv/versions/env271/



 

pyenv rehash
爲全部已安裝的可執行文件 (如:~/.pyenv/versions/*/bin/*) 建立 shims
每當你增刪了 Python 版本或帶有可執行文件的包(如 pip)之後,都應該執行該命令

pyenv install 2.7.3
pyenv rehash

 

pyenv global
設置全局的 Python 版本,經過將版本號寫入 ~/.pyenv/version 文件的方式。

pyenv global 3.4.0

 

設置面向程序的本地版本,經過將版本號寫入當前目錄下的 .python-version 文件的方式。

經過這種方式設置的 Python 版本優先級較 global 高。pyenv 會從當前目錄開始向上逐級查找 .python-version 文件,直到根目錄爲止。若找不到,就用 global 版本。

pyenv local 2.7.3

 

設置面向 shell 的 Python 版本,經過設置當前 shell 的 PYENV_VERSION 環境變量的方式。
這個版本的優先級比 local 和 global 都要高。--unset 參數能夠用於取消當前 shell 設定的版本。

pyenv shell pypy-2.2.1
pyenv shell --unset

 

  

參考:https://my.oschina.net/lionets/blog/267469 

相關文章
相關標籤/搜索