1. 程式人生 > 程式設計 >python中如何使用虛擬環境

python中如何使用虛擬環境

在進行python的開發過程中一直倡導使用虛擬環境來進行專案隔離,這樣不會因為python的包不同而導致各種問題,但是以往為了圖省事簡單,安裝包就一直使用pip install 進行全域性安裝,這樣做其實很不好,最近也開始嘗試使用虛擬環境來對專案進行隔離開發。

在python中一般情況下有兩套方案,一種是使用virtualenv/venv 方式,還有一種是使用pipenv,但是看到網上對於pipenv這個專案有些非議,就目前來說專案的issue和pr很多,但是開發者似乎不太想要對其進行維護,所以還是先嚐試比較成熟穩定的virtualenv/venv方式吧,至於pipenv 以後再進行嘗試。
我所考慮的幾個問題

  1. 如何建立一個虛擬隔離環境
  2. 如何在虛擬環境中安裝包
  3. 如何使用國內的映象源加速
  4. 如何遷移專案到別的機器上

現在主要在python3中開發,所以就直接使用venv的方式吧,virtualenv和venv方式差不多,如果你是在python2中那麼就使用virtualenv吧。

如何建立一個虛擬隔離環境

建立目錄,並使用命令建立虛擬環境

mkdir venvtest
cd venvtest
python3 -m venv venttest

我是在windows環境下,執行完上面的命令以後會在venvtest目錄下venvtest目錄,這個目錄下有python3環境的基礎標準庫,並不包含你在全域性環境中安裝的第三方包。

呼叫虛擬環境的\Scripts\activate 命令就可以啟用虛擬環境,啟用虛擬環境以後,命令列提示符前會顯示當前虛擬環境的名字:(venttest) E:\venvtest>

安裝第三方庫

和全域性安裝一樣,使用pip install 命令,只不過這次是安裝到了虛擬環境,如執行pip install requests命令,執行之後再檢視venvtest\venttest\Lib\site-packages 中就會有requests庫了,但是前提一定要使用activate啟用當前的虛擬環境,要不就安裝到了全域性的python site-packages目錄裡了。

如何使用國內的映象源加速


在虛擬機器環境中使用pip 讀取的是全域性的映象回事配置,就是要建立一個環境變數HOME,然後在HOME環境變數的目錄下建立pip目錄,再建立一個pip.ini,寫入

[global]
index-url = https://mirrors.aliyun.com/pypi/simple

我這裡使用的是阿里雲的映象加速。

如何遷移專案到別的機器上

我這裡簡單使用Flask建立一個hello world的專案

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
 return '歡迎來到我的世界'

在啟用虛擬環境的情況下使用flask run 命令來執行服務,此時因為flask安裝在虛擬環境中,即使全域性python環境中沒有flask也可以執行,但一定要在啟用虛擬環境的狀態。

如何遷移專案

換一個電腦開發或者在多人開發的情況下,需要怎麼遷移專案呢?
簡單的方式是直接將原虛擬環境直接打包到新的目錄,然後修改一個相應的目錄配置。
主要是Script\activate.bat 將裡面的
set "VIRTUAL_ENV=E:\vtest\venttest" 修改為新的路徑。
還有一種方式是在原虛擬環境下備份出第三方庫列表,然後在新環境中重新安裝。
備份列表命令使用pip freeze > requirements.txt 將該虛擬環境安裝的第三方包備份到requirements.txt,在新的環境使用pip install -r requirements.txt 進行安裝,使用pip freeze 命令也會同時將第三方庫的版本資訊備份,這樣也保證了遷移以後的前後版本一致。
新電腦上也要安裝相同使用的python主環境,如你的虛擬環境是pyhon3,新環境只有python2,那也是不行的。
但是之前做專案的時候對第三方庫原始碼進行了修改,這裡也需要同時修改一下。

pycharm專案配置虛擬環境

pycharm 在建立專案的時候可以直接使用venv來建立

python中如何使用虛擬環境

在New environment using 的下拉選項中選擇 Virualenv,在Base interpreter 中使用python 3.5 ,這裡列出了系統中安裝的python版本。如果沒有列出的話也可以點選後面的… 來手工選一下。

以上就是python中如何使用虛擬環境的詳細內容,更多關於python 虛擬環境的資料請關注我們其它相關文章!