已完成的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
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步,已经得到了:
- python安装包
- 2 requirements_full.txt
- 3 packages/ 文件夹
这3份数据可以在其他PC上离线部署python环境
新环境部署
拷贝python安装包、requirements.txt 和 packages
- 安装python
- 安装好之后,进入命令行,输入以下命令离线安装packages
pip install --no-index --find-links=./packages -r requirements.txt
已完成的python项目-环境离线部署的更多相关文章
- 数据仓库006 - MySQL 5.6.x - Linux最佳生产环境离线部署
一.离线安装包 文件准备 这里以mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz为例,记一次MySQL 5.6.x 的生产环境离线部署过程.使用SecureCRT连接 ...
- OpenShift 4.2环境离线部署Operatorhub
缺省离线环境安装的ocp4的Operatorhub是没有内容的.详细离线文档参考官网文档 https://docs.openshift.com/container-platform/4.2/opera ...
- 【保姆级】Python项目(Flask网页)部署到Docker的完整过程
大家好,我是辰哥~ 前提:相信看到这篇文章的读者应该已经学会了Docker的安装以及Docker的基本使用,如果还不会的可以参考我之前的文章进行详细学习! 1.安装版:2300+字!在不同系统上安装D ...
- python项目环境的导出、导入
导出开发环境 pip freeze > requirements.txt # 文件导出路径 导入环境 pip install -r requirements.txt # pip 则会自动下载安装 ...
- Jenkins 为Jenkins添加Windows Slave远程执行python项目脚本
为Jenkins添加Windows Slave远程执行python项目脚本 by:授客 QQ:1033553122 测试环境 JAVA JDK 1.7.0_13 (jdk-7u13-windows ...
- Python环境搭建、python项目以docker镜像方式部署到Linux
Python环境搭建.python项目以docker镜像方式部署到Linux 本文的项目是用Python写的,记录了生成docker镜像,然后整个项目在Linux跑起来的过程: 原文链接:https: ...
- CentOS6.9下离线部署Django项目
最近项目服务器变动,研究了CentOS6.9下httpd2.4+django1.11.16+python3.6+PostgreSQL的部署,之前还有一个ubuntu16.04下的部署等以后整理好后再来 ...
- Jenkins部署Python项目实战
一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...
- 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 本文展示了怎么使用 ...
随机推荐
- Eclipse导入Solr源码Version5.5.3
将Solr的5.5.3版本源码导入Eclipse, Solr源码需要使用ant构建后才能导入Eclipse. 1.JDK安装 Solr要求jdk1.7+: 请参考Windows下安装配置jdk 2.A ...
- CAS学习笔记三:SpringBoot自动配置与手动配置过滤器方式集成CAS客户端
本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式集成CAS客户端. 需要提前搭建 CAS 服务端,参考 https://www.cnblogs.com/hell ...
- tcpdump统计http请求并导出URL文本
tcpdump统计http请求并导出URL文本 tcpdump tcpdump是一个用于截取网络分组,并输出分组内容的工具.凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排 ...
- 访问 远程 tomcat 的管理页面 /manager/html 提示 403 的具体解决操作
1.前言 我在阿里云服务器放了个tomcat ,启动后 ,访问 /manager/html提示403无权访问 原因是 tomcat默认仅仅允许本地的浏览器访问,有ip限制 需要将ip限制去除 顺便把账 ...
- Linux上天之路(十六)之Shell编程一
用户在命令行输入命令后,一般情况下Shell会fork并exec该命令,但是Shell的内建命令例外,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程.以前学过的cd.alias.u ...
- 大数据安全与RANGER学习和使用
概述 再说ranger之前需要明白一下大数据的安全体系的整体介绍,安全体系其实也就是权限可控,先说说权限:权限管理的目标,绝对不是简单的在技术层面建立起用户,密码和权限点的映射关系这么简单的事,更重要 ...
- [爱偷懒的程序员系列]-Section 1. “懒”是一切需求的根源
一直认为"懒"推进了科技的发展,因为"懒"而促生了各种各样的需求.科技的进步加速了各种信息的交互频率,站在台面上说是因为业务需要提高效率,成本需要降低,服务需要 ...
- 记一次 .NET 某药品仓储管理系统 卡死分析
一:背景 1. 讲故事 这个月初,有位朋友wx上找到我,说他的api过一段时间后,就会出现只有请求,没有响应的情况,截图如下: 从朋友的描述中看样子程序是被什么东西卡住了,这种卡死的问题解决起来相对简 ...
- 《剑指offer》面试题57 - II. 和为s的连续正数序列
问题描述 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数). 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列. 示例 1: 输入:target ...
- [开发笔记usbTOcan]软件需求分析和软件架构设计
前面文章进行了系统分析和系统架构设计,手工焊接了一个板子,集合EK-TMC123GXL开发板(请忽略焊接技术) SWE.1 | 软件需求分析 软件需求分析过程的目的是将系统需求的软件相关部分转化为一组 ...