1. 程式人生 > 其它 >【Python - 虛擬環境】專案的啟動,從隔離開發環境開始

【Python - 虛擬環境】專案的啟動,從隔離開發環境開始

目錄

前言

在實際專案開發中,通常會根據自己的需求去下載各種相應的框架或庫。

但是,每個專案使用的框架或庫並不一樣,甚至版本也不一樣。這樣如果直接在Python

環境中安裝各種各樣的庫,就會造成開發環境的混亂,引起很多不必要的麻煩。

因此,這種情況就需要虛擬環境來進行開發環境的隔離,沒一個虛擬環境對應一個專案,方便管理。

路漫漫兮其修遠兮,吾將上下而求索!


一、Python虛擬環境列舉

Python建立虛擬環境的方式有很多總,包括:venvvirtualenvcondapipenvpoetry等。

說明:

  • venvPython3.5+自帶,官方文件
  • virtualenvpipenv:通過pip安裝
  • conda官網下載,安裝
  • poetry:安裝方法參考官網,也可通過pip安裝

二、不同虛擬環境的簡要對比

2.1 poetry
pipenv

poetrypipenv,這兩個類似,是Python虛擬環境和依賴管理工具;poetry還提供了包管理功能,比如打包和釋出。

2.2 venvvirtualenv

poetrypipenv,這兩個類似,操作方式對新手來說更容易上手。

2.3 Anaconda

Anaconda 提供了在單臺機器上執行 Python/R 資料科學和機器學習的最簡單方法。立即開始使用數以千計的開源包和庫。(官網介紹)

因此,對於資料科學和機器學習的環境來說,可以優先選擇Anaconda

以下內容主要介紹我用過的poetryvenvvirtualenv

二、實踐檢驗真理

2.1 更好的選擇:poetry
(推薦)

官方文件:https://python-poetry.org/

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.txtdev.txtprod.txt對依賴進行區分。
  • 如果使用pip freeze會匯出很多附屬依賴,造成檔案的不可讀。

因此,以前建立依賴檔案時,是在增加依賴時,同時新增安裝的指定版本到requirements.txt(base.txtdev.txtprod.txt)檔案中。

使用poetry之後,以上問題都很好的得到了解決。並且還包含了打包和釋出功能。

總結

虛擬環境的使用,是專案開發的基礎,使用哪種虛擬環境,可以根據自己的實際情況進行選擇。

最近有了解到一個新的包管理工具PDM(Python Development Manager),據說是一個更厲害的工具,並且這是一個國人開發的工具。

之後有時間會對這個工具的使用做一個瞭解,這應該是一個很好的工具。

有興趣的朋友們,也可以嘗試嘗試這個工具。