1. virtualenv 説明
在開發Python應用程序時,系統默認的Python版本可能會不兼容這個應用程序, 如果同時開發多個應用程序, 可能會用到好幾個版本的python環境, 這種情況下,每個應用可能需要各自擁有一套"獨立"的Python運行環境。virtualenv就是用來為一個應用創建一套"隔離"的Python運行環境的工具。virtualenv是python的一個虛擬化環境工具,用來建立一個虛擬的python環境,一個專屬於項目的python環境, 用virtualenv 來保持一個乾淨的環境非常有用, 可以幫助我們在同一台host上創建多套純淨的python解釋器環境並實現相互隔離,各個環境下安裝的庫僅限於自己的環境,不會影響到別人。
2. 配置過程
注意:以下配置過程是在如下環境下操作,不通的操作系統版本,python版本操作可能有不同。
- win10
- win10 安裝的python 版本為 python3.7
- Pycharm 版本為 2022.2.1
2.1 配置過程如下:
- 安裝
virtualenv:在windows主機上通過pip安裝virtualenv - 創建虛擬環境:在項目目錄下創建
virtualenv的工作空間。 - 開啓virtualenv。
- 在Pycharm 中配置虛擬環境。
- 在虛擬環境中生成依賴配置文件
requirements.txt - 通過
git共享依賴配置。 - 在其他服務器上使用
virtualenv加載requirements.txt
2.2 分步驟描述
2.2.1 安裝 virtualenv
通過 pip 安裝 virtualenv 命令如下:
pip install virtualenv
建議切換 pip 源為國內源,可以參考文章:Windows下配置pip指定下載源具體操作步驟 將pip源切為國內源。
2.2.2 創建虛擬環境
我的Python項目名稱為:habitat_py ,項目保存在 e:/workspace/gitee/habitat_py 目錄下。
在 e:/workspace/gitee/habitat_py 目錄下創建子目錄 venv,命令如下:
# 創建python 3.6的虛擬環境
virtualenv venv --python=python3.6
2.2.3 開啓virtualenv
進入 venv 目錄
激活
cmd> E:\workspace\gitee\habitat_py\venv\Scripts\activate
關閉
(venv) E:\workspace\gitee\habitat_py\venv\Scripts\deactivate
注意
- virtualenv 創建的虛擬環境與主機的 Python 環境完全無關
- 你主機配置的庫不能在 virtualenv 中直接使用。
- 你需要在虛擬環境中利用 pip install 再次安裝配置後才能使用。
2.2.4 在Pycharm 配置 virtualenv
具體配置過程如下圖:
步驟3中選擇剛剛創建的虛擬環境,則 python interpret 會選取虛擬環境中的 python 而不是你係統安裝的 python。
2.2.4 在虛擬環境中生成依賴配置文件 requirements.txt
上述步驟中已經在本機環境下配置成功虛擬環境,把需要安裝的Package通過requirements.txt導出保存在git記錄中。後續一個命令便可部署新環境。具體步驟如下:
# 注意:需要在virtualenv 環境下執行如下命令
(venv) > pip freeze > requirements.txt
可以觀察到在項目根目錄下生成了 requirements.txt 文件如下:
et-xmlfile==1.1.0
numpy==1.21.5
openpyxl==3.0.9
pandas==1.3.5
python-dateutil==2.8.2
pytz==2021.3
2.2.5 在git中保存配置
將上述生成的requirements.txt 文件提交到 git中,後續在其他服務器上就可以直接複用這些配置,快速啓動開發。
3. 使用
通過 git clone 下源碼後,通過如下步驟使用 venv 環境安裝依賴
# 在工作目錄下進入虛擬環境(windows服務器下)
> source venv\Scripts\activate
# 在虛擬環境下安裝依賴
> pip install -r requirements.txt
參考資料
- Windows下配置pip指定下載源具體操作步驟
- windows下使用pycharm配置python的virtualenv環境 [寫的很全面,重點參考]
- pycharm pip源修改以及包管理
- Is it bad to have my virtualenv directory inside my git repository?