Python离线项目迁移部署
最近遇到了一个场景:需要将Python项目文件打包到无法联网的主机上部署执行,本篇文章记录针对于该场景的处理方案。
说明:
源主机(可联网):安装了Python3和pip3
目标主机(无法联网):需安装和源主机相同的Python版本和pip3,部署执行项目文件
主机系统为centos,Python版本为3.5.2,通过虚拟环境+pip进行迁移
目标主机离线安装Python及pip3
源主机中下载所需包
Python3
首先,下载Python3,可以在官网或者通过源主机(可联网的其它主机)wget:
wget --no-check-certificate https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
Python3依赖包
然后,需要下载Python3的依赖包,可以通过centos镜像中去copy,不过我更推荐用yum生成的方式:
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel epel-release gcc gcc-c++ xz-devel readline-devel gdbm-devel sqlite-devel tk-devel db4-devel libpcap-devel libffi-devel --downloadonly --downloaddir=/packages
命令执行完毕,你就会在/packages目录下发现所需的所有.rpm文件。
如果,源主机中已经安装了这些依赖,那么你可以用:
yum reinstall zlib-devel bzip2-devel openssl-devel ncurses-devel epel-release gcc gcc-c++ xz-devel readline-devel gdbm-devel sqlite-devel tk-devel db4-devel libpcap-devel libffi-devel --downloadonly --downloaddir=/packages
打包:
zip -r packages.zip packages/
目标主机中安装
将Python-3.5.2.tgz和packages.zip上传至目标主机。
首先,安装Python3依赖:
unzip packages.zip
cd packages/
rpm -Uvh *.rpm --nodeps --force
然后,安装Python3:
tar -zxvf Python-3.5.2.tgz
mkdir /usr/local/python3
cd Python-3.5.2
./configure --prefix=/usr/local/python3 # 将Python3安装在/usr/local/python3
make && make install # 编译安装
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 创建python3软链接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 # 创建pip3软链接
安装完毕,可通过:
Python3 -V
pip3 -V
查看并检查安装的版本
源主机中打包项目文件
若项目中创建虚拟环境,首先激活虚环境,然后进入项目文件,执行:
pip3 freeze > requirements.txt
将当前项目中的库列表生成并保存在requirements.txt中。
然后,通过pip生成批量离线安装包(whl文件):
pip wheel --wheel-dir=./tmp/packages -r requirements.txt
执行完毕之后,你会发现/tmp/packages中包含了项目所需的所有.whl
打包项目文件:
zip A.zip A/
目标主机中部署
上传A.zip至目标主机,创建虚环境,并激活(python3 自带了venv):
python3 -m venv test_venv
cd test_venv
source bin/activate
解压项目代码A.zip,并切换:
unzip A.zip
cd A/
安装项目Python依赖模块:
pip3 install --no-index --find-links=tmp/packages -r requirements
安装完毕,检查:
pip3 freeze
当然你也可以通过python命令行import进行检验哈哈。
最后,执行项目启动脚本(startup.sh)部署:
chmod +x ./startup.sh
nohup ./startup.sh > a-log 2>&1 &
以上,就完成了整个项目的迁移部署。
Python离线项目迁移部署的更多相关文章
- Python web项目Django部署在Ubuntu18.04腾讯云主机上
Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04 材料准备 准备一个Django项目 准备一台Ubuntu18.04的主机 ssh连接到主机(腾 ...
- Python基于Flask框架配置依赖包信息的项目迁移部署小技巧
一般在本机上完成基于Flask框架的代码编写后,如果有接口或者数据操作方面需求需要把代码部署到指定服务器上. 一般情况下,使用Flask框架开发者大多数都是选择Python虚拟环境来运行项目,不同的虚 ...
- GitHub Python项目推荐|瓦力Devops开源项目代码部署平台持续部署
GitHub Python项目推荐|walle - 瓦力 Devops开源项目代码部署平台 项目热度 标星(star):8418 (很不错的实用项目,大神作品,建议关注) 标星趋势 关注(watch) ...
- NodeJS项目迁移兼Ubuntu下NodeJS环境部署
前言 之前做的几个项目都托管在阿里云服务器,但是最近要到期了.想着到底要不要续期,毕竟100/月.后面看着阿里云有个活动,800/三年.果断买下.环境部署折腾了一天,其中也遇到几个坑. 目录 一.安装 ...
- 使用Nginx+Uwsgi部署Python Flask项目
第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...
- Azure 项目构建 – 部署高可用的 Python Web 应用
Python 以其优美,清晰,简单的特性在全世界广泛流行,成为最主流的编程语言之一.Azure 平台针对 Python 提供了非常完备的支持.本项目中,您将了解如何构造和部署基于 Azure Web ...
- Linux06 /Python web项目部署
Linux06 /Python web项目部署 目录 Linux06 /Python web项目部署 1. 部署方式 2. 纯后端代码部署/CRM为例 1. 部署方式 2. crm项目详细部署步骤 3 ...
- 浅析Python项目服务器部署
基础理论 关于Web服务器和应用服务器 基本概念: Web服务器主要功能就是存储.处理.传递网页,客户端和服务器之间基于HTTP协议进行通信. 应用服务器主要是处理动态请求,调用相应的对象完成对请求的 ...
- Python Django项目部署 Linux 服务器
项目依赖: Linux Centos7 (阿里云轻量级服务器) + Python 3.7.2 + Django 2.2.1 + restframework 3.9.4 + mysql 5.7 1 安装 ...
随机推荐
- 从NIPS2014大会看机器学习新趋势
微软杰出科学家 John Platt 本文译自:Machine Learning Trends fromNIPS 2014 编者按:John Platt是微软的杰出科学家,也是微软在机器学习领域的领军 ...
- 吴裕雄--天生自然 神经网络人工智能项目:基于深度学习TENSORFLOW框架的图像分类与目标跟踪报告(续四)
2. 神经网络的搭建以及迁移学习的测试 7.项目总结 通过本次水果图片卷积池化全连接试验分类项目的实践,我对卷积.池化.全连接等相关的理论的理解更加全面和清晰了.试验主要采用python高级编程语言的 ...
- 无人工地,原来是靠AI这样运行的
随着全世界逐渐进入老龄化社会,适龄工作人口将急剧减少,必然导致用工成本增加,施工方降低人工成本.提升施工效率和质量的需求会越来越强烈,数字化施工技术应用前景广阔.在过去的十年中,无人机迎来了自己发展的 ...
- Java JDBC调用inout类型参数的存储过程
存储过程参数类型:in.out.inout,in:输入类型,out:输出类型,inout:既可输入,也可以输出. 一.JDBC调用inout类型参数的存储过程,并且获得返回值 Class.forNam ...
- POJ 3041 Asteroids 二分图之最大匹配
题意:在一个网格中有若干个点,每一次可以清除一行或者一列,问最少几次可以将网格中的点全部清除. 思路:这个题是一个入门的最大匹配题(这个好像不是思路..).一般的方式就是将 行 看作集合A,列 看作集 ...
- IOS常见语法解惑
由于工作过程中经常需要查看IOS的Objective-C代码,遂把一些常见的.有疑问的OC语法列出,方便之后会看,提升效率. Objective-C中的@语法 @interface告诉编译器,我要声明 ...
- TensorFlow_Faster_RCNN中demo.py的运行(CPU Only)
GitHub项目地址,https://github.com/endernewton/tf-faster-rcnnTensorflow Faster RCNN for Object Detection. ...
- Ubuntu日常使用总结
Contents 使用了将近一年的Ubuntu,感觉不用windows也可以处理日常的事务.并且我相信只要合理利用Ubuntu,一定可以取代你手中的Windows.我不是说Ubuntu有多么好,只是从 ...
- LeetCode 题解 | 面试题 10.01. 合并排序的数组
给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m 和 n. 示例: 输入: A = [ ...
- NLP(二十二)利用ALBERT实现文本二分类
在文章NLP(二十)利用BERT实现文本二分类中,笔者介绍了如何使用BERT来实现文本二分类功能,以判别是否属于出访类事件为例子.但是呢,利用BERT在做模型预测的时候存在预测时间较长的问题.因此 ...