写点什么

Python 开发篇——构建虚拟 Python 开发环境(Conda+Poetry)

用户头像
DisonTangor
关注
发布于: 1 小时前

前言

之前虽略有提及 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 --versionoutput: Poetry version 1.1.7$ poetry new pyServiceoutput: 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__.pyfrom flask import Flaskapp = 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

发布于: 1 小时前阅读数: 2
用户头像

DisonTangor

关注

怀揣一个武侠梦的男孩 2020.07.29 加入

还未添加个人简介

评论

发布
暂无评论
Python开发篇——构建虚拟Python开发环境(Conda+Poetry)