python虚拟环境部署最佳实践

use*_*699 0 deployment virtualenv python-3.x

我对 python 非常陌生,正在学习虚拟环境。我知道我应该将所有库安装在虚拟环境中并创建requirement.txt,以便其他人可以使用它进行安装。但是,我不确定部署到生产的最佳实践是什么?

我问的原因是,没有人应该有权访问生产环境,部署是通过预定义的管道进行的,我的理解是,它将压缩我的所有代码并将其部署到生产环境,没有人应该进入生产环境做任何体力工作。我可以尝试让管道运行脚本来安装基于requirement.txt的所有库,但我不确定防火墙设置是否相同。我也应该打包这些库吗?

另外,我应该如何触发python脚本?我是否应该有一个包装脚本来在调用 python 脚本之前激活 vevn 并在调用 python 脚本之后停用它?或者有更简单的方法吗?

Boo*_*boo 5

首先,虚拟环境有几个原因。主要原因是您可能有多个具有不同且相互冲突的依赖关系的应用程序(即需要相同模块的不同版本)。pip freeze第二个好处是,它通过在虚拟环境中执行命令来巧妙地“枚举”应用程序所需的模块。无论您是否计划搬到新环境,这都非常有用。

只要您的应用程序具有如下的shebang :

#!/full-path-to-the-bin-directory-of-my-virtual-environment/python3
Run Code Online (Sandbox Code Playgroud)

那么您不必为脚本激活虚拟环境来查找环境的模块。无论如何,这是我使用命令创建虚拟环境的经验python -m venv

因此,理想情况下,您可以通过 shell 访问生产环境,并能够在其中创建虚拟环境,并使用在开发虚拟环境中requirements.txt使用命令创建的文件来初始化它。pip freeze因此,我不会将虚拟环境置于源代码控制之下,而是将文件置于requirements.txt源代码控制之下。