Linux環境下python虛擬環境virtualenv安裝和使用

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章