前言

之前虽略有提及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

Python开发篇——构建虚拟Python开发环境(Conda+Poetry)的更多相关文章

  1. 构建虚拟工控环境系列 - 西门子虚拟PLC

    一. 概述 跟随着工控安全一路走来,工控安全市场今年明显有相当大的改善,无论从政策还是客户需求,都在逐步扩大中.但是,搞工控安全研究的人员却寥寥无几.一方面工控安全是个跨学课的技术,需要了解多方面的知 ...

  2. python基础篇_001_初识Python

    一.Python环境 windows环境安装Python步骤 .下载安装包:https://www.python.org/downloads/windows/  .安装:默认安装路径:C:\pytho ...

  3. [python学习篇][书籍学习][python standrad library][内建函数]之[list,open,len,pow,range,

    Python 解释器内置了一些函数,它们总是可用的.这里将它们按字母表顺序列出.     Built-in Functions     abs() divmod() input() open() st ...

  4. 构建虚拟工控环境系列 - 罗克韦尔虚拟PLC

    一. 概述 本篇主要介绍罗克韦尔虚拟PLC的搭建,使用的操作系统为Windows7 x86 Ultimate(DEEP_GHOST_WIN7_SP1_X86_V2015_06.iso),虚拟化软件为 ...

  5. Python进阶篇四:Python文件和流

    摘要: Python对于文件和流的操作与其他编程语言基本差不多,甚至语句上比其他语言更为简洁.文件和流函数针对的对象除了这两者之外还有,类文件(file-like),即python中只支持读却不支持写 ...

  6. [python学习篇][书籍学习][python standrad library][内建函数]之[all,any,basestring,isinstance,bin,bool,@classmethod,@staticmethod,cmp,enumerate

    Python 解释器内置了一些函数,它们总是可用的.这里将它们按字母表顺序列出.     Built-in Functions     abs() divmod() input() open() st ...

  7. [python学习篇][书籍学习][python standrad library][内建类型]迭代器类型

    我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list.tuple.dict.set.str等:一类是generator,包括生成器和带yield的generato ...

  8. [python学习篇][书籍学习][python standrad library][内建类型]之数值

    数值类型 — int, float, long, complex 有四种不同的数值类型:普通整数.长整数.浮点数和复数 普通整数(或者简称整数)使用C中的long实现,其精度至少为32位(sys.ma ...

  9. [python学习篇][书籍学习][python standrad library][内置类型]对象测试真值,布尔值操作, 比较操作

    几乎所有对象都可以比较.测试真值.转换为字符串(其实就是用repr()函数,或略有差异的str()函数来转换) 1 对象是否为真 任何对象都可以测试真值,用于if或while的条件或下面布尔运算的操作 ...

随机推荐

  1. .NET平台系列18 .NET5的超强优势

    系列目录     [已更新最新开发文章,点击查看详细] 支持所有 .NET 应用程序类型 .NET5 统一版本之后将支持所有 .NET 应用程序类型:Xamarin.ASP.NET.IoT 和桌面.此 ...

  2. fiddler修改请求包和返回包

    设置好过滤后,找到需要修改的包,按如下步骤进行包的数据修改1.设置"禁止上传"(禁止XX为本人自己理解,专业术语不记得了,高手可留言笔者重新修订博文),打上断点,如下标志就是在请求 ...

  3. zabbix 发现 vmvare esxi6.7 虚拟主机

    1:服务端配置确认 确保 #vi /etc/zabbiz/zabbix-server/zabbix_server.conf ## 确认其中有 StartVMwareCollectors项目 值 > ...

  4. 为什么我严重不建议去培训机构参加SAP培训?

    欢迎关注微信公众号:sap_gui (ERP咨询顾问之家) 关于是否要参加SAP培训的话题已经是老生常谈了,知乎上随便一搜有好多人在问是否要去参加SAP培训,底下已经有很多人在上面给出了正确建议.但也 ...

  5. Quill基本使用和配置 - DevUI

    DevUI 是一款面向企业中后台产品的开源前端解决方案,它倡导沉浸.灵活.至简的设计价值观,提倡设计者为真实的需求服务,为多数人的设计,拒绝哗众取宠.取悦眼球的设计.如果你正在开发 ToB 的工具类产 ...

  6. 还在担心写的一手烂SQL,送你4款工具

    对于正在运行的mysql,性能如何,参数设置的是否合理,账号设置的是否存在安全隐患,你是否了然于胸呢? 俗话说工欲善其事,必先利其器,定期对你的MYSQL数据库进行一个体检,是保证数据库安全运行的重要 ...

  7. HTTP首部字段详解

    HTTP首部字段详解 在HTTP/1.1规范中定义了47种首部字段,总共分为四大类: 通用首部字段 -- 请求报文和响应报文两方都会使用的首部 请求首部字段 -- 从客户端向服务器端发送请求报文时使用 ...

  8. 关于MySql数据库误操作数据找回的办法

    先讲个事,前段时间,系统长时间不用的一个功能被开放出来了,想当然的我没有在测试平台上测试,直接操作了正式系统(的确是我不严谨),导致好多数据异常,页面展示错乱了.于是我想到的第一个就是进行备份还原.项 ...

  9. 有趣的开源项目集结完毕,HelloGitHub 月刊第 63 期发布啦!

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这里有实战项目.入门教程.黑科技.开源书籍.大厂开源项目等,涵盖多种编程语言 Pyt ...

  10. .Net Core:限流

    一.环境 1.vs2019 2..Net Core 3.1 3.引用 AspNetCoreRateLimit 4.0.1 二.基础使用 1.设置 在Startup文件中配置如下,把配置项都放在前面: ...