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


如果我們要同時開發多個應用程序,每個應用可能需要各自擁有一套“獨立”的Python運行環境,我們可以使用virtualenv解決這個問題,它可以為一個應用創建一套“隔離”的Python運行環境。

一. 安裝virtualenv 

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

 

二. 創建環境

創建python2環境:

virtualenv myenv

創建python3環境

virtualenv -p /usr/bin/python3  myenv3

如果你的虛擬環境安裝庫的時候出問題,比如python3環境

需要安裝pip3

sudo apt-get install python3-pip

 

創建完全隔離的Python環境,實質是創建了一個文件夾,我們的操作都是在這個目錄里面進行的。

創建的虛擬環境文件夾的位置在家目錄下,名為myenv

 默認情況下,virtualenv會引用系統python環境中 site-­packages 中的庫,並將其復制到虛擬python環境的庫中。我們可以設置 --no-site-packages 參數取消對系統Python庫的引用,以此來創建一個完全純凈的python環境。

virtualenv --no-site-packages myenv

 

myenv的lib/目錄下,便是我們創建的python虛擬環境,這個默認的python版本由我們的系統python環境決定,比如我本機的python環境為python2.7,virtualenv便默認創建python2.7的環境。當然,我們也可以創建自定義版本的python虛擬環境,這在后文有介紹。  

三. 激活虛擬環境

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 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM