当前位置:首页 » 《随便一记》 » 正文

【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)

29 人参与  2024年05月05日 12:10  分类 : 《随便一记》  评论

点击全文阅读


一.venv独立运行环境(虚拟环境)

一般每个不同的项目都会依赖各自的库,有些库的版本不一样会引起冲突,为了解决这个问题,需要使用虚拟环境,Python可以在每个项目目录下创建各自的虚拟环境项目所依赖的包就在当前目录环境下,这样避免了库版本的冲突,也方便相同操作系统间可以快速的拷贝项目运行。

Python3.3 版本开始,自带一个venv名令, 无需手动安装 但Python2、Python3.3之前的版本没有自带venv,需要使用pip手动安装virtualenv
pip install virtualenv  # 安装python2对应pip版本的virtualenv  pip3 install virtualenv  # python3对应pip版本的virtualenv  

二.如何实现

创建目录,这里把venv命名为test101env,因此目录名为test101env:

[root@robot-DOM-server test]# mkdir test101env[root@robot-DOM-server test]#  cd test101env/[root@robot-DOM-server test101env]#

第二步,创建一个独立的Python运行环境:

[root@robot-DOM-server test101env]# python3 -m venv .

查看当前目录,可以发现有几个文件夹和一个pyvenv.cfg文件:

ls

在这里插入图片描述

命令python3 -m venv <目录>可以创建一个独立的Python运行环境

观察bin目录的内容,里面有python3、pip3等可执行文件,实际上是链接到Python系统目录的软链接
在这里插入图片描述

继续进入bin目录Linux/Macsource activateWindowsactivate.bat激活该venv环境:

source activate

在这里插入图片描述

注意到命令提示符变了,有个(test101env)前缀,表示当前环境是一个名为test101env的Python环境。
在这里插入图片描述

正常安装各种第三方包,并运行python命令:

在这里插入图片描述
pip3 install jinja2

运行python命令

(test101env) [root@localhost bin]# python3Python 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import jinja2>>> exit()

在这里插入图片描述

venv环境下,用pip安装的包都被安装到test101env这个环境下,具体目录是test101env/lib/python3.x /site-packages,因此,系统Python环境不受任何影响。也就是说,test101env环境是专门针对test101这个应用创建的。

退出当前的test101env环境,使用deactivate命令:

deactivate
此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。
在这里插入图片描述

三.原理

venv是如何创建“独立”的Python运行环境的呢?

原理很简单,就是把系统Python链接或复制一份到venv的环境,用命令source activate进入一个venv环境时,venv会修改相关环境变量,让命令python和pip均指向当前的venv环境

如果不再使用某个venv,如何删除?

例如test101env,删除它也很简单。首先确认该venv没有处于“激活”状态,然后直接把整个目录test101env删掉就行

小结

venv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题

如何优雅的部署Python应用到Linux服务器?

四.在Linux服务器上简单部署一个Python项目

1.安装Python3环境

安装Python3环境

2.部署python应用

1. 将本地开发环境的依赖项目生成清单文件

在项目所在目录执行命令:pip freeze > requirements.txt

将当前项目使用的python解释器中的依赖包保存到requirements.txt 文件中

清单文件将会生成在当前项目目录下,内容如下所示:
在这里插入图片描述

2.将Python项目上传到服务器

3.为项目创建虚拟环境

将项目拷贝至服务器上后,进入项目文件中,用命令:python -m venv env_name 创建虚拟环境, 其中env_name 为虚拟环境的名称

注意:Python2、Python3.3之前的版本需要使用pip手动安装virtualenv,创建虚拟环境命令为 python -m virtualenvenv_name

启动创建的虚拟环境:通过命令 source 环境名称/bin/activate ,虚拟环境激活之后,对应的环境名会出现在命令行关闭虚拟环境的命令deactivate
在这里插入图片描述

4.安装对应项目的依赖包

虚拟环境启动之后,在虚拟环境中安装我们对应项目的依赖了,命令:
pip3 install -r requirements.txt安装项目的依赖包(requirements.txt为项目收集的依赖包地址)

执行下载requirements文件内依赖名命令
在这里插入图片描述当前虚拟环境存放在已下载好的
在这里插入图片描述

如果对应的Linux环境中未配置国内镜像源,导致依赖包安装缓慢,可以通过命令
pip install -i 国内镜像源地址 -r requirements.txt 安装项目依赖包

如果没有requirements.txt,也可以直接使用命令: pip install 第三方库名 进行安装

5.运行主程序文件

在虚拟环境可以直接通过命令:python xx.py 运行程序文件,但是该命令无法让主程序文件处于后台运行状态,一旦关闭会话页面,程序就会停止为了让程序能够在后台运行,可以使用命令:nohup python xx.py,该命令可以让程序文件处于后台运行 状态,并且能够将运行日志收集到nohup.out文件中。

点击全文阅读


本文链接:http://zhangshiyu.com/post/103807.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1