Python 自动化运维之Venv 环境与requirements.txt部署实现
Python 自动化运维之venv 虚拟与requirements.txt部署实现
- 一、Python venv 简介
- 1.为什么要用虚拟环境?
- 2.什么是虚拟环境?
- 二、Python Venv (python 3.4+内置 venv)
- 二、创建虚拟环境
- 1. 创建工程目录
- 2. 进入工程目录
- 3. 创建虚拟环境
- 4. 启用虚拟环境
- 附注:不同平台下venv 的激活(启用)方式:
- 二、生成库依赖文件
- requirements文件有什么用呢?
- 参考:
一、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上执行
pip install -r re.txt
即可自动安装re.txt中指定的包。很快就都搞定;
参考:
- 虚拟环境和包
- 一文解读 virtualenv & venv & pipenv 之间的联系与区别
- python3 virtualenv
- virtualenv.pypa.io
- https://docs.python.org/3/library/venv.html
CSDN-Ada助手: 多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/7978856, 请多输出高质量博客, 帮助更多的人
zyj小胖子= ̄ω ̄=: 换别的解决方案了,用centos镜像创建新容器,然后在容器内安装libreoffice和unoconv,导出来作为基础镜像使用。然后用django做了个文件转换接口,通过执行unoconv命令来进行文件转换。
十一步一算: 解决了吗哥
whitealso: 你好,请问在签发证书时可以指定证书有效期的格式吗?比如指定notbefore时间是generalized time
城市里的元: 为什么连接32769 端口?