Python 自动化运维之Venv 环境与requirements.txt部署实现

在这里插入图片描述

一、Python venv 简介

1.为什么要用虚拟环境?

我们在项目开发的时候会依赖较多的依赖库(包package)。但是我们会在同一个开发环境下同时开发多个项目,这样会导致个项目间的库都会安装在开发环境下,随着 Python 项目增多,不同的项目会需要不同版本的 Python 库,并且同一个 Python 库不同版本可能并不兼容。因此,我们在开发的时候可以像虚拟机一样,针对不同的项目构建不同的环境,不同的库,但是这样很繁琐,所以借鉴这个方式,可以通过对不同项目构建不同的虚拟环境来实现隔离的效果,同时这样也可以在我们发布时配合使用pip freeze命令生成库依赖,发挥依赖管理的作用。

2.什么是虚拟环境?

虚拟环境可以为每一个项目安装独立的 Python 库,这样就能隔离不同项目之间的 Python 库,也能够隔离项目与操作系统之间的 Python 库。
**建议:**在开发 Python 项目时、生产环境下都使用虚拟环境来管理项目依赖。

二、Python Venv (python 3.4+内置 venv)

venv - this delegates the creation process towards the venv module, as described in PEP 405. This is only available on Python interpreters having version 3.4 or later, and also has the downside that virtualenv must create a process to invoke that module (unless virtualenv is installed in the system python), which can be an expensive operation (especially true on Windows).

译文:
venv - 如PEP 405 中所述,将创建过程委托给venv模块。 这仅在版本3.4或更高版本的Python解释器上可用,,并且还存在缺点,即virtualenv必须创建一个进程来调用该模块(除非在系统python中安装了virtualenv),这可能是一项昂贵费事的操作(在Windows上尤其如此)

二、创建虚拟环境

对于一个工程而言,建议将 venv 建立在工程目录之下:

1. 创建工程目录

mkdir project

2. 进入工程目录

cd project

3. 创建虚拟环境

python -m venv ./venv

4. 启用虚拟环境

-rw-r--r-- 1 Man-Chen 197121  19K 6月  25 23:21 Activate.ps1  # windows  powershell
-rw-r--r-- 1 Man-Chen 197121 2.3K 6月  25 23:21 activate   # Linux  ;source activate
-rw-r--r-- 1 Man-Chen 197121  982 6月  25 23:21 activate.bat  # windows  cmd
-rw-r--r-- 1 Man-Chen 197121  368 6月  25 23:21 deactivate.bat   # 关闭虚拟环境

C:\software\pythonWorkSpace\project
$ .\venv\Scripts\activate.bat            # 启用venv
(venv) $               					 #成功进入虚拟环境

其他平台详见下表:

附注:不同平台下venv 的激活(启用)方式:

在这里插入图片描述

二、生成库依赖文件

我们通过pip freeze 命令将已安装的包生成requirements文件:
pip freeze > re.txt

requirements文件有什么用呢?

如果你在机器A上部署了一个应用,现在你需要在机器B上部署同样的应用,如逐个包安装就麻烦了。通常是:在A上生成re.txt,将re.txt传到B上,在B上执行

扫描二维码关注公众号,回复: 11414681 查看本文章
pip install -r re.txt

即可自动安装re.txt中指定的包。很快就都搞定;

参考:

  1. 虚拟环境和包
  2. 一文解读 virtualenv & venv & pipenv 之间的联系与区别
  3. python3 virtualenv
  4. virtualenv.pypa.io
  5. https://docs.python.org/3/library/venv.html

猜你喜欢

转载自blog.csdn.net/AMimiDou_212/article/details/106963365