virtualenv用於創建獨立的Python環境,多個Python相互獨立,互不影響,它能夠:
1. 在沒有權限的情況下安裝新套件
2. 不同應用可以使用不同的套件版本
3. 套件升級不影響其他應用
一、virtualenv的使用
通過pip安裝virtualenv:
pip install virtualenv
測試安裝:
virtualenv --version
爲一個工程項目搭建一個虛擬環境:
cd my_project
virtualenv my_project_env
另外,如果存在多個python解釋器,可以選擇指定一個Python解釋器(比如``python2.7``),沒有指定則由系統默認的解釋器來搭建:
virtualenv -p /usr/bin/python2.7 my_project_env
將會在當前的目錄中創建一個名my_project_env的文件夾,這是一個獨立的python運行環境,包含了Python可執行文件, 以及 pip
庫的一份拷貝,這樣就能安裝其他包了,不過已經安裝到系統Python環境中的所有第三方包都不會複製過來,這樣,我們就得到了一個不帶任何第三方包的“乾淨”的Python運行環境來。
如果已經安裝了一些第三方庫在系統的 site-packages
目錄中,希望在新的虛擬環境中也可以使用它們,那麼你可以使用 --system-site-packages
選項:
virtualenv --system-site-packages my_project_env
要開始使用虛擬環境,其需要被激活:
linux:
source my_project_env/bin/activate
window 10:
> cd D:\WWW\flask\movie_env\scripts # 先進入啓動目錄
D:\WWW\flask\movie_env\scripts > ./activate # 啓動虛擬機
下提示權限錯誤信息:
.\activate : 無法加載文件 H:\envproject\venv\Scripts\activate.ps1,因爲在此係統上禁止運行腳本。
有關詳細信息,請參閱 https:/go.microsoft.com/fwlink/?LinkID=135170
中的about_Execution_Policies。所在位置 行:1 字符: 1
解決辦法:
1.以管理員身份打開PowerShell
2.執行命令 set-executionpolicy remotesigned
停用虛擬環境:停用後將回到系統默認的Python解釋器
deactivate
刪除:
刪除虛擬機可以直接刪除目錄:rm -rf my_project_env
二、virtualenvwrapper 虛擬環境集中管理庫
virtualenvwrapper
是一個基於 virtualenv
之上的工具,它將所有的虛擬環境集中起來管理。
2.1、安裝
pip install virtualenvwrapper # 命令會自動安裝 virtualenvwrapper 及其依賴包 virtualenv, virtualenv-clone。
virtualenvwrapper
默認將所有虛擬環境放在 ~/.virtualenvs
目錄下管理,可以修改環境變量 WORKON_HOME
來指定虛擬環境的保存目錄。
2.2、啓動
source /usr/local/python/bin/virtualenvwrapper.sh
# 運行命令來啓用 virtualenvwrapper;virtualenvwrapper.sh 在 python 安裝目錄下
可以將該命令添加到 ~/.bashrc
或 ~/.profile
等 shell 啓動文件中,以便登錄 shell 後可以直接使用 virtualenvwrapper
提供的命令。
啓動時報錯:
/usr/bin/python: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
set properly.
錯誤原因:是因爲系統中存在兩個或多個 python 的版本,如果是使用的 python 3.x 就需要修改環境變量參數,這裏默認的是python 3。
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
2.3、用法
1. 創建虛擬環境
mkvirtualenv env
命令表示在 WORKON_HOME
目錄下創建了一個 env
虛擬環境。
2. 啓動虛擬環境
workon env
命令表示啓用了 env
虛擬環境。workon
命令會自動停用當前所處的虛擬環境(如果存在的話)然後啓動指定的虛擬環境,這樣你就可以快速在各個虛擬環境之間切換。另外 workon
命令還提供了虛擬環境名稱自動補完功能以幫助你選擇虛擬環境。
3. 退出虛擬環境
執行 deactivate
命令退出虛擬環境。
4. 刪除虛擬環境
執行 rmvirtualenv env
命令刪除 env
虛擬環境。
5. 其他命令
lsvirtualenv
顯示所有虛擬環境。cdvirtualenv
跳轉至當前虛擬環境目錄,方便查看虛擬環境的site-packages
目錄。cdsitepackages
直接跳轉至當前虛擬環境的site-packages
目錄。lssitepackages
顯示當前虛擬環境的site-packages
目錄內容。
三、autoenv 庫
autoenv
可以讓你進入一個含有 .env
文件的目錄時,自動執行 .env
文件來設置系統環境。
如果進入某個項目目錄時自動激活它所對應的虛擬環境,那麼可以在 .env
文件中配置激活期待的虛擬環境。
3.1、安裝
pip install autoenv # 命令自動安裝 autoenv 工具。
3.2、啓動
source /usr/local/opt/autoenv/activate.sh
可以將該命令添加到 ~/.bashrc
等 shell 啓動文件中。
3.3、用法
爲項目設置特定的系統環境,那麼可以在項目根目錄下面新建一個 .env
文件,將所需設定的系統環境寫在 .env
文件中。
當啓用 autoenv
後,它會自動執行 .env
文件。
例如進入 workspaces
目錄自動退出虛擬環境,編輯 workspaces/.env
添加以下內容:
BASE_PATH=`dirname "${BASH_SOURCE}"`
PWD=`pwd`
if [[ "${BASE_PATH}" == "${PWD}" ]]
then
declare -f -F deactivate &>/dev/null
if [[ "${?}" == "0" ]]
then
deactivate
fi
fi
又例如進入 workspaces/project
目錄自動激活虛擬環境,編輯 workspaces/project/.env
添加以下內容:
BASE_PATH=`dirname "${BASH_SOURCE}"`
PWD=`pwd`
if [[ "${BASE_PATH}" == "${PWD}" ]]
then
if [[ -e bin/activate ]]
then
source bin/activate
fi
fi