首頁 > 系統教程 > Linux > 使用 virtualenv 的 Python 環境設定教學

使用 virtualenv 的 Python 環境設定教學

WBOY
發布: 2024-01-03 19:50:01
轉載
1010 人瀏覽過

在開發Python應用程式的時候,系統安裝的Python3只有一個版本:3.4。所有第三方的套件都會被pip安裝到Python3的site-packages目錄下。

如果我們要同時開發多個應用程序,那麼這些應用程式都會共用一個Python,就是安裝在系統的Python 3。如果應用A需要jinja 2.7,而應用B需要jinja 2.6怎麼辦?

這種情況下,每個應用程式可能需要各自擁有一套「獨立」的Python運作環境。 virtualenv就是用來為一個應用程式創造一套「隔離」的Python運作環境。

首先,我們用pip安裝virtualenv:

$ pip3 install virtualenv
登入後複製

然後,假定我們要開發一個新的項目,需要一套獨立的Python運行環境,可以這麼做:

第一步,建立目錄:

Mac:~ michael$ mkdir myproject
Mac:~ michael$ cd myproject/
Mac:myproject michael$
登入後複製

第二步,創建一個獨立的Python運行環境,命名為venv

Mac:myproject michael$ virtualenv --no-site-packages venv
Using base prefix '/usr/local/.../Python.framework/Versions/3.4'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.
登入後複製

指令virtualenv就可以建立一個獨立的Python運作環境,我們也加入了參數--no-site-packages,這樣,已經安裝到系統Python環境中的所有第三方包都不會複製過來,這樣,我們就得到了一個不帶任何第三方包的“乾淨”的Python運行環境。

新建的Python環境被放到目前目錄下的venv目錄。有了venv這個Python環境,可以用source#進入環境:

Mac:myproject michael$ source venv/bin/activate
(venv)Mac:myproject michael$
登入後複製

注意到指令提示字元變了,有個(venv)前綴,表示目前環境是一個名為venv的Python環境。

下面正常安裝各種第三方包,並執行python指令:

(venv)Mac:myproject michael$ pip install jinja2
...
Successfully installed jinja2-2.7.3 markupsafe-0.23
(venv)Mac:myproject michael$ python myapp.py
...
登入後複製

在venv環境下,用pip安裝的套件都被安裝到venv這個環境下,系統Python環境不受任何影響。也就是說,venv環境是專門針對myproject這個應用程式所建立的。

退出目前的venv環境,使用deactivate指令:

(venv)Mac:myproject michael$ deactivate 
Mac:myproject michael$
登入後複製

此時就回到了正常的環境,現在pip或python都在系統Python環境下執行。

完全可以針對每個應用程式建立獨立的Python運行環境,這樣就可以對每個應用的Python環境進行隔離。

virtualenv是如何創造「獨立」的Python運作環境的呢?原理很簡單,就是把系統Python複製一份到virtualenv的環境,用指令source venv/bin/activate進入一個virtualenv環境時,virtualenv會修改相關環境變量,讓指令python和pip都指向目前的virtualenv環境。

小結

virtualenv為應用提供了隔離的Python運作環境,解決了不同應用間多版本的衝突問題。

以上是使用 virtualenv 的 Python 環境設定教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:linuxprobe.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板