最近遇到了一个场景:需要将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 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 Django项目部署 Linux 服务器

项目依赖: Linux Centos7 (阿里云轻量级服务器) + Python 3.7.2 + Django 2.2.1 + restframework 3.9.4 + mysql 5.7 1 安装 ...

Python简介及环境部署

Python的由来:         Python的创始人:Guido van Rossum Guido 在1989年12月时,寻找一门“课余”编程项目来打发圣诞节前后的时间.Guido决定为当时正构 ...

随机推荐

mongodb操作命令

连接mongodb:(mongo命令打开的是一个javascript shell.所以js语法在这里面都行得通)mongo 192.168.18.xx:27088/ups -uusername -pp ...

Ubuntu下freeradius-server的安装与mysql-server的关联

1.创建freeradius数据库 #service mysql start ... #mysql -u root -p Enter password: 456456 ... mysql> cr ...

HackerRank training-the-army

Description 有 \(n\) 个技能,每次可以通过一个巫师,将一个技能转化成另一个技能,问最有最多有多少不同的技能. Sol 网络流. 先说说我一开始非常 naive 的建图,将技能拆点,中 ...

MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)

本节开始为大家讲解偏向应用的知识--创建对话框.  对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是对话框,知识它做了很多美工方面的工作,将其大大美 ...

jquery弹出关闭遮罩层实例

jquery弹出关闭遮罩层实例. 代码如下: ...

ltrace killed by SIGTRAP

[Ltrace-devel] ltrace stucks with pthreads Heiko Carstens heiko.carstens at de.ibm.comFri Apr 14 11: ...

Add GUI to connect to SQL

(*********************************************************************************) (* *) (* Below i ...

Linux中一些简单命令(一)

1.查看当前用户:who 2.显示当前目录:pwd 3.查看当前服务器的时间:date 4.查看日历:cal+year; 例如:cal 2016 5.计算器:bc  退出计算器:quit或者ctrl+ ...

自己做的notepad++ FTP同步插件

平时修改FTP上的文件的时候,想先备份一下,没有合适的方法,尝试做了一个小插件. 差点忘了,下载地址   https://pan.baidu.com/s/1htdtT9E 下面是   具体的说明 Fa ...

h5移动端屏幕适配

1.rem

python离线环境迁移_Python离线项目迁移部署相关推荐

  1. 断网python第三方库安装_Python离线断网情况下安装numpy、pandas和matplotlib等常用第三方包...

    联网情况下在命令终端CMD中输入"pip install numpy"即可自动安装,pandas和matplotlib同理一样方法进行自动安装. 工作的电脑不能上外网,所以不能通过 ...

  2. python服务器环境搭建_python服务器环境搭建(2)——安装相关软件

    在上一篇我们在本地的虚拟服务器上安装好CentOS7后,我们的python web服务.自定义的python service或python脚本需要在服务器上运行,还需要在服务器安装各种相关的软件才行, ...

  3. python编程环境要求_python公开课|我们需要优秀Python编程环境的要求居然是这些...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注Py ...

  4. python设置环境变量_Python设置环境变量

    python设置环境变量 We can set an environment variable in Python using os module. Python os module environ ...

  5. python没有pil模块_Python离线安装PIL 模块的方法

    Python离线安装PIL 模块的方法 发布时间:2020-09-02 00:14:51 来源:脚本之家 阅读:122 作者:那. python的库一般都用pip安装. 但是有时候也会出现在线安装失败 ...

  6. python插件安装包_python 离线安装插件包

    利用 pip install 包名.wql 安装插件包 1.首先安装pip wget --no-check-certificate https://github.com/pypa/pip/archiv ...

  7. python脱离环境运行_python 生成exe脱离python环境运行

    1. 简介 python 程序编写完之后需要进行打包成exe发布,不暴露源码,目前主要打包的工具有三种: 1) PyInstaller(推荐) 2) cx_Freeze 3) py2exe PyIns ...

  8. python编译环境搭建_python开发环境搭建

    python的开发环境是比较简单的,本来也没打算要写,不过现在想想还是写出来,一方面保证来我博客上python内容的完整性,一方面也可能有些人真的不会,毕竟我是用了很多其他语言之后才转到python的 ...

  9. python 添加环境变量_python永久添加环境变量

    import sys sys.path 系统环境是一个list,可以将自己需要的库添加进入,例如mysql库,hive库等等.有三种方式添加,均验证通过: 1 临时添加,在一个shell窗口中 imp ...

最新文章

  1. ACE .i .inl文件(转)
  2. java query接口_「软帝学院」Java零基础学习详解
  3. ML:机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率)
  4. 【译】Jumping into Solidity —The ERC721 Standard (Part 1)
  5. tomcat 增加运行内存
  6. CVPR 2021 | 姿态可控的语音驱动
  7. linux 查看hadoop命令大全,linux下hadoop集群常用命令
  8. 【Spring】Spring 父子容器
  9. 单元测试 - mock异常
  10. 删除文件批处理delete file.bat
  11. ubuntu18.04 linux journalctl 命令
  12. AE插件:saber插件mac版怎么安装?saber插件汉化版安装教程
  13. 连接服务器打印机文件名无效,局域网打印机连接时显示打印机名无效是何原因? 求教数码高手!...
  14. C语言:判断对错(简化版)
  15. 软件过程的价值观、原则以及实践——从敏捷说起
  16. linux awl***程序说明
  17. node.js入门_Node.js入门
  18. 语义解析Parser用户手册
  19. p二、使用 docker-compose 安装 Prometheus+Alertmanager+Grafana
  20. ajax获取php页面数据,ajax如何取php页面的数据

热门文章

  1. ADO Overview
  2. 《软件测试》第二章 软件开发的过程
  3. 艾美捷抗人IL-8 (CXCL8)单抗MT8F19说明书
  4. 关于XPS的一点思考(1)-XPS的起源
  5. 基于CAD等高线的流域边界绘制
  6. 使用Xposed去除微博国际版的启动广告
  7. 仿知乎日报图文小程序模板
  8. android主流手机测试,硬件测试哪家强?安卓手机跑分软件横评
  9. 计算机及应用可以评职称么,可以跨专业评职称吗?
  10. SNMP 网络协议介绍