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

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

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

二.如何实现

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

    [root@robot-DOM-server test]# mkdir test101env
    [root@robot-DOM-server test]#  cd test101env/
    [root@robot-DOM-server test101env]#
    
  2. 第二步,创建一个独立的Python运行环境:

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

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

    ls
    

    在这里插入图片描述

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

      • 观察bin目录的内容,里面有python3、pip3等可执行文件,实际上是链接到Python系统目录的软链接
        【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)_第1张图片
    • 继续进入bin目录Linux/Macsource activateWindowsactivate.bat激活该venv环境:

      source activate
      

      【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)_第2张图片

  • 注意到命令提示符变了,有个(test101env)前缀,表示当前环境是一个名为test101env的Python环境。
    【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)_第3张图片
  1. 正常安装各种第三方包,并运行python命令:

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

  2. 运行python命令

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

    【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)_第4张图片

    • venv环境下,用pip安装的包都被安装到test101env这个环境下,具体目录是test101env/lib/python3.x /site-packages,因此,系统Python环境不受任何影响。也就是说,test101env环境是专门针对test101这个应用创建的。
  3. 退出当前的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 文件中

    • 清单文件将会生成在当前项目目录下,内容如下所示:
      【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)_第5张图片

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

3.为项目创建虚拟环境

  • 将项目拷贝至服务器上后,进入项目文件中,用命令:python -m venv env_name 创建虚拟环境
    • 其中env_name 为虚拟环境的名称
  • 启动创建的虚拟环境:通过命令 source 环境名称/bin/activate ,虚拟环境激活之后,对应的环境名会出现在命令行
  • 关闭虚拟环境的命令deactivate
    【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)_第6张图片

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

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

    • 执行下载requirements文件内依赖名命令
      在这里插入图片描述
    • 当前虚拟环境存放在已下载好的
      【Python】如何在服务器上优雅的部署Python项目(Linux/Windows/Mac)_第7张图片
  • 如果对应的Linux环境中未配置国内镜像源,导致依赖包安装缓慢,可以通过命令
    pip install -i 国内镜像源地址 -r requirements.txt 安装项目依赖包

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

5.运行主程序文件

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

你可能感兴趣的:(Python,服务器,python,linux,虚拟环境,veev)