• 已完成的python项目-环境离线部署


    python环境离线部署

    当前生产环境中,有很多基于python开发的工具需要使用。
    由于python工具往往涉及到很多依赖,在线状态下,可以通过pip requirements来管理安装。
    但有时候,会遇到需要部署的环境,无法连接到pip源的情况。比如,客户端处于内部网或者无网络连接的情况的情况。
    在这种情况下,准备完全离线的安装环境,可以大大降低工具部署成本。

    在某项目中,开发了一个windows平台下基于python的数据显示工具。
    假设客户的电脑上什么环境也没有,以下步骤小结了如何进行离线部署。

    准备工作

    1. 准备干净的Python包

    考虑到尽量精简,在项目依赖不多的时候,建议使用python标准包部署环境。
    python官网或其他源上下载所需的python安装包并安装。

    2. 创建一个python的虚拟环境

    如果开发时没有隔离虚拟环境,可以在此时隔离。
    假设已下载安装了标准Python包3.8,并安装在了D:/python3.8/
    进入CMD命令行

    D:\python3.8\python.exe -m venv d:\virtual_env
    

    当然,如果已经配置了Path的系统变量,可以直接

    python.exe -m venv d:\virtual_env
    

    建立好新环境后,在新环境d:\virtual_env

    pip freeze > requirments_zero.txt 
    

    得到的应该是一个空文件。

    3. 在虚拟环境下安装本项目需要的依赖,直到项目可以运行

    将虚拟环境激活(切换pycharm的interpreter或者active虚拟环境)
    这时候,新项目所需的包是未安装状态的,也无法运行。
    对于已经开发完毕的项目,应当已经记录过一个requirements.txt,举例来说,本项目依赖:
    (以下为requirements.txt)

    flask
    flask-cors
    paramiko
    pyecharts
    piexif

    这5行已经记录在了requirements.txt里
    可以通过

    pip install -r requirements.txt
    

    安装
    如果没有记录,则需要逐个排查安装依赖库

    4. 生成含有所有依赖链的requirements.txt

    当项目可以在新环境正常运行后,在新环境d:\virtual_env下

    pip freeze > requirments_full.txt
    

    会生成一个包含基于当前python版本的所有依赖链的清单,举例来说,本项目依赖:
    (以下为requirements_full.txt)

    bcrypt3.2.0
    cffi
    1.15.0
    click8.0.3
    colorama
    0.4.4
    cryptography36.0.1
    Flask
    2.0.2
    Flask-Cors3.0.10
    itsdangerous
    2.0.1
    Jinja23.0.3
    MarkupSafe
    2.0.1
    paramiko2.9.2
    piexif
    1.1.3
    prettytable3.0.0
    pycparser
    2.21
    pyecharts1.9.1
    PyNaCl
    1.5.0
    simplejson3.17.6
    six
    1.16.0
    wcwidth0.2.5
    Werkzeug
    2.0.3

    5. 下载依赖链的所有whl

    通过以下命令,可以

    pip download -r requirements_full.txt -d ./packages
    

    经过1~5步,已经得到了:

      1. python安装包
    • 2 requirements_full.txt
    • 3 packages/ 文件夹
      这3份数据可以在其他PC上离线部署python环境

    新环境部署

    拷贝python安装包、requirements.txt 和 packages

    1. 安装python
    2. 安装好之后,进入命令行,输入以下命令离线安装packages
    pip install --no-index --find-links=./packages -r requirements.txt
    
  • 相关阅读:
    中兴PTN常用命令解析
    在Android中实现区域截屏
    攻防演练-紫队视角下的实战攻防演练组织
    使用C#和SQL server根据父级查询该子级(包括父级)下所有对应的数据
    Install Nginx in Linux
    队列:C++实现
    HTML 实时显示本地电脑时间(精确到毫秒)
    【前端网页】CSS样式表进阶之盒子模型
    [H5动画制作系列 ]变量,帧频,监听器等的生命周期基础测试
    [附源码]计算机毕业设计springboot小区物业管理系统
  • 原文地址:https://www.cnblogs.com/yushengchn/p/15886828.html