Python開發篇——構建虛擬Python開發環境(Conda+Poetry)


前言

之前雖略有提及Python,但是沒有實際地寫點料。慚愧,慚愧,所以這次先起個頭,講講如何構建虛擬Python開發環境。相信之前看過我博客的人可能會想:博主不會又要聊聊Docker吧?放心,不會。首先Docker雖然適合構建虛擬Python容器,但是卻存在一個問題——交互性。Python開發者必然是希望生成的軟件具備可移植性。但是用Docker做移植是需要Docker build的。這樣會使得開發過程變得極為不方便。所以我們需要聊聊除Docker以外,Python如何實現虛擬開發環境。

為什么需要虛擬開發環境?

Java的圈子流行一句“Java隨你怎么升,我還用鐵打的Java8”,但是我們應該知道開發語言都存在多個版本,而且有些語言會在強大的社區擁護下成長,產生出一些多版本的LTS版本或是stable版本,用於項目的發展。於是,我們在接觸新老項目的時候,就會需要調整Python的開發環境。所以原因如下:

  1. 多項目之間便於切換開發環境。
  2. 虛擬環境可以產生簡潔的配置文件,便於項目實施部署。
  3. 與Git結合,便於項目的管理和開發環境的快速構建及重構。

工具

  1. conda(linux采用miniconda,windows采用anaconda)
  2. Poetry

為什么需要Conda?

正如Rust可以通過Cargo來實現版本的切換,Python也有很多相關的工具如pyenvpyenv-virtualenvconda等。這里我推薦conda,首先他提供了科學計算的神器Anaconda包和類似於PYPI的conda庫,其次他可以輕松的構建各種版本的Python虛擬開發環境。

Linux安裝

執行下面的bash命令:

$ cd ~ && rm -rf ./Anaconda3 # 刪除原來的anaconda
# 自行清除環境變量里的anaconda信息
$ wget "https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh"
$ bash Miniconda3-latest-Linux-x86_64.sh
# 重啟計算機
# reboot

$ conda env list查看激活版本
$ conda create -n env_name python=3.8
$ conda activate env_name # 激活虛擬環境

注意:conda可以通過 export 導出環境配置文件

Windows安裝

三種方式:

  1. 自己搜索anaconda官網,下載exe文件,麻瓜式安裝。
  2. choco安裝
  3. scoop安裝

為什么需要Poetry

Poetry是一個 Python 打包和依賴管理系統,最初於 2018 年發布。它可以順利處理依賴項,特別是如果您在全新環境中使用 Poetry 然后添加您的 Python 包。它還可以確定性地處理項目的其他工具和配置,因為它使用TOML格式作為 Python 配置文件。簡而言之,TOML 旨在使用易於閱讀的最小配置文件。Poetry 使用配置文件來安裝 python 包並設置配置。pyproject.toml。

安裝Poetry

這里只以linux帶過:

$curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
# 重啟計算機
# reboot

構建一個Flask應用

$ poetry --version
output: Poetry version 1.1.7
$ poetry new pyService
output: Created package pyservice in pyService
$ poetry add flask

pyproject.toml

[tool.poetry]
name = "pyService"
version = "0.1.0"
description = ""
authors = ["DsnTgr <email@address>"]

[tool.poetry.dependencies]
python = "^3.9"
Flask = "^2.0.1"

[tool.poetry.dev-dependencies]
pytest = "^5.2"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

pyservice目錄下__init__.py

# hello_world/__init__.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

if __name__ == "__main__":
    app.run()

執行下面的命令:

$ export FLASK_APP="pyservice"
$ poetry run flask run
* Serving Flask app 'pyservice' (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat

結論

首先通過Conda來實現Python多版本的管理,接着通過Poetry來實現Python項目的依賴包管理,最終達到構建虛擬Python開發環境。

感謝

  1. A Guide to Python Environment, Dependency and Package Management: Conda + Poetry
  2. Building a Python package, and a container image with poetry


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM