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

cffi1.15.0

click8.0.3

colorama0.4.4

cryptography36.0.1

Flask2.0.2

Flask-Cors3.0.10

itsdangerous2.0.1

Jinja23.0.3

MarkupSafe2.0.1

paramiko2.9.2

piexif1.1.3

prettytable3.0.0

pycparser2.21

pyecharts1.9.1

PyNaCl1.5.0

simplejson3.17.6

six1.16.0

wcwidth0.2.5

Werkzeug2.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

已完成的python项目-环境离线部署的更多相关文章

  1. 数据仓库006 - MySQL 5.6.x - Linux最佳生产环境离线部署

    一.离线安装包 文件准备 这里以mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz为例,记一次MySQL 5.6.x 的生产环境离线部署过程.使用SecureCRT连接 ...

  2. OpenShift 4.2环境离线部署Operatorhub

    缺省离线环境安装的ocp4的Operatorhub是没有内容的.详细离线文档参考官网文档 https://docs.openshift.com/container-platform/4.2/opera ...

  3. 【保姆级】Python项目(Flask网页)部署到Docker的完整过程

    大家好,我是辰哥~ 前提:相信看到这篇文章的读者应该已经学会了Docker的安装以及Docker的基本使用,如果还不会的可以参考我之前的文章进行详细学习! 1.安装版:2300+字!在不同系统上安装D ...

  4. python项目环境的导出、导入

    导出开发环境 pip freeze > requirements.txt # 文件导出路径 导入环境 pip install -r requirements.txt # pip 则会自动下载安装 ...

  5. Jenkins 为Jenkins添加Windows Slave远程执行python项目脚本

    为Jenkins添加Windows Slave远程执行python项目脚本   by:授客 QQ:1033553122 测试环境 JAVA JDK 1.7.0_13 (jdk-7u13-windows ...

  6. Python环境搭建、python项目以docker镜像方式部署到Linux

    Python环境搭建.python项目以docker镜像方式部署到Linux 本文的项目是用Python写的,记录了生成docker镜像,然后整个项目在Linux跑起来的过程: 原文链接:https: ...

  7. CentOS6.9下离线部署Django项目

    最近项目服务器变动,研究了CentOS6.9下httpd2.4+django1.11.16+python3.6+PostgreSQL的部署,之前还有一个ubuntu16.04下的部署等以后整理好后再来 ...

  8. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

  9. Python开发环境(3):使用Eclipse+PyDev插件创建Django项目

    OS:Windows 10家庭中文版,Python:3.6,Eclipse:Oxygen.1a Release (4.7.1a), PyDev:6.3.2,Django:2.0.3 本文展示了怎么使用 ...

随机推荐

  1. Kafka基础教程(二):Kafka安装

    因为kafka是基于Zookeeper的,而Zookeeper一般都是一个分布式的集群,尽管kafka有自带Zookeeper,但是一般不使用自带的,都是使用外部安装的,所以首先我们需要安装Zooke ...

  2. Microsoft HoloLens 开发(3): 全息图交互方式 - Gaze

    Gaze(凝视) 是 HoloLens 交互输入的第一种形式,告诉你 用户 在世界上的位置,并让你确定他们的意图. 1.Gaze的用途 作为一个 Mixed Reality 开发者,Gaze 可以做很 ...

  3. unittest_认识unittest(1)

    unittest是python内置的单元测试框架,具备编写用例.组织用例.执行用例.输出报告等自动化框架的条件. 使用unittest前需要了解该框架的五个概念: 即test case,test su ...

  4. Selenium_使用execute_script执行JavaScript(11)

    selenium的包含的方法已能完全满足UI自动化,但是有些时候又不得不用到执行JS的情况,比如在一个富文本框中输入1W个字,使用send_keys方法将经历漫长的输入过程,如果换成使用JS的inne ...

  5. MySQL主从复制作用和配置

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  6. AP原理与最终一致性 强一致性 弱一致性

    转载自:http://www.blogjava.net/hello-yun/archive/2012/04/27/376744.html https://blog.csdn.net/c28905453 ...

  7. 触发器中获取sql

    CREATE trigger 触发器名 on 表名 for update,delete as set nocount on create table #t(EvebtType varchar(60), ...

  8. Centos下安装Scala(2)

    1.下载压缩包 命令:wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz 2.解压缩包 命令:tar -xzvf sc ...

  9. CesiumJS新增官方TypeScript类型定义

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 在当前的1.70版本中,CesiumJS现在附带了正式的Type ...

  10. Cesium入门10 - 3D Tiles

    Cesium入门10 - 3D Tiles Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 我们团队有时把Ces ...