【Python - 虛擬環境】專案的啟動,從隔離開發環境開始
前言
在實際專案開發中,通常會根據自己的需求去下載各種相應的框架或庫。
但是,每個專案使用的框架或庫並不一樣,甚至版本也不一樣。這樣如果直接在Python
因此,這種情況就需要虛擬環境來進行開發環境的隔離,沒一個虛擬環境對應一個專案,方便管理。
路漫漫兮其修遠兮,吾將上下而求索!
一、Python
虛擬環境列舉
Python
建立虛擬環境的方式有很多總,包括:venv
、virtualenv
、conda
、pipenv
、poetry
等。
說明:
二、不同虛擬環境的簡要對比
2.1 poetry
、pipenv
poetry
和pipenv
,這兩個類似,是Python
虛擬環境和依賴管理工具;poetry
還提供了包管理功能,比如打包和釋出。
2.2 venv
、virtualenv
poetry
和pipenv
,這兩個類似,操作方式對新手來說更容易上手。
2.3 Anaconda
Anaconda 提供了在單臺機器上執行 Python/R 資料科學和機器學習的最簡單方法。立即開始使用數以千計的開源包和庫。(官網介紹)
因此,對於資料科學和機器學習的環境來說,可以優先選擇Anaconda
。
以下內容主要介紹我用過的poetry
、venv
和virtualenv
。
二、實踐檢驗真理
2.1 更好的選擇:poetry
(推薦)
2.1.1 安裝poetry
官方推薦安裝方法:
Linux/MacOS
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
Windows
# PowerShell
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
安裝完成後,檢視(終端):poetry -V
2.1.2 基本使用
# 初始化,在當前目錄(專案根目錄)建立 pyproject.toml 檔案
poetry init
# 檢視當前所使用的環境
poetry env info
# 指定使用 python(如果不指定,將使用環境變數的python;可不指定)
poetry env use /path/python
# 新增依賴
poetry add package
poetry add package@^3.2.13
poetry add package -D # 開發依賴
poetry add package --optional # 可選依賴
# 更新依賴(非必要,一般不使用)
poetry update
poetry update package
# 如果手動修改了 pyproject.toml 中依賴,需要更新lock檔案
poetry lock
# 進入虛擬環境
poetry shell
# 不進入虛擬環境也可進行操作
poetry run python manage.py runserver
2.2 最簡單的操作:venv
& virtualenv
2.2.1 venv
基本使用
# 建立虛擬環境
python -m venv venv
# 進入虛擬環境
# Windows
venv\Scripts\activate
# Linux/MacOS
source venv/bin/activate
# 安裝依賴
pip install package
pip install package==3.2.13
# 退出虛擬環境
# Windows
venv\Scripts\deactivate
# Linux/MacOS
deactivate
2.2.2 virtualenv
基本使用
在使用PyCharm時,也可使用virtualenv
建立虛擬環境,操作簡單。
軟體工具欄:File - Settings - Project - Python Interpreter - 設定按鈕() - Add。
在新增Python虛擬環境(Add Python Interpreter)時,需要設定的僅有Location
(虛擬環境存放的目錄,一般是專案根目錄),Base interpreter
(選擇Python直譯器,找到Python的安裝目錄,預設使用環境變數中的Python)
三、推薦poetry
理由
早期在使用PyCharm
時,一直用的是通過(PyCharm)virtualenv
建立的虛擬環境;專案部署時使用的是venv
建立的虛擬環境。
以上方案整體上說,用起來還是很方便的,但是會存在一些問題。
- 安裝依賴的版本不固定,對於存在依賴大版本更新的情況下,專案可能會無法正常執行。
- 開發環境與生產環境的依賴區分問題。之前使用
base.txt
、dev.txt
、prod.txt
對依賴進行區分。 - 如果使用
pip freeze
會匯出很多附屬依賴,造成檔案的不可讀。
因此,以前建立依賴檔案時,是在增加依賴時,同時新增安裝的指定版本到requirements.txt(base.txt
、dev.txt
、prod.txt
)檔案中。
使用poetry
之後,以上問題都很好的得到了解決。並且還包含了打包和釋出功能。
總結
虛擬環境的使用,是專案開發的基礎,使用哪種虛擬環境,可以根據自己的實際情況進行選擇。
最近有了解到一個新的包管理工具PDM(Python Development Manager),據說是一個更厲害的工具,並且這是一個國人開發的工具。
之後有時間會對這個工具的使用做一個瞭解,這應該是一個很好的工具。
有興趣的朋友們,也可以嘗試嘗試這個工具。