Linux下离线安装python

问题概述

银行证券或国家重要部门项目部署,经常需要无网络环境安装python,使用yum install方式变得不可行

解决方案

  1. 使用docker解决此问题,在客户机上离线安装docker,开发人员写好docker build file,在可联网的客户机上构建好镜像,再将镜像手动复制到目标离线客户机(此方式,本文不作讨论)
  2. 直接在离线客户机上安装离线python及项目依赖包,之后部署python项目

本文主要针对第二种方式,如何制作python离线安装包进行着重讲解

制作python离线安装包

目标环境:Red Hat Enterprise Linux Server release 7.0 (Maipo)

(作者后来在部署安装时,实际目标环境是7.1(Maipo),事实证明没有任何问题)

要在高版本linux上安装python,最好在更低的版本制作安装包,以防目标机器缺少相关的安装前依赖

制作离线安装包的环境:CentOS6.5 (带GUI,开发版,可联网)

  • 全新安装,带GUI的开发版
  • 可上互联网
  • 可使用yum 安装,相关的respo已经配置好

制作过程

下载python的官方tar包

注意这是source源码包

wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

 使用yum安装python所需依赖包

yum install -y bzip2 
yum install -y zlib
yum install -y xz
yum install -y readline
yum install -y gdbm
yum install -y sqlite
yum install -y ncurses
yum install -y gcc
yum install -y openssl
yum install -y openssl-devel

设置要安装的python目录

mkdir -p /opt/cwiz/python

解压已下载的python包

tar -zxvf Python-3.6.5.tgz
cd Python-3.6.5

修改ssl配置

cp Modules/Setup.dist Modules/Setup
vim Modules/Setup ## 注意修改的是Setup,而不是Setup.dist

修改Setup的内容,就是将ssl的注释的部分配置放开:


* # Socket module helper for socket(2)
* _socket socketmodule.c
* # Socket module helper for SSL support; you must comment out the other
* # socket line above, and possibly edit the SSL variable:
* #SSL=/usr/local/ssl
* _ssl _ssl.c \
* -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
* -L$(SSL)/lib -lssl -lcrypto

配置安装python

./configure --prefix=/opt/cwiz/python/
make & make install

如果报错,则用yum安装相关依赖,再make clean,再重新安装

检查python

/opt/cwiz/python/bin/python3

如果出现python交互界面即说明安装成功

制作python依赖包

在一台可联网的机器(192.168.0.8)上,在线安装好python3.6.5:

(一次性安装)

/opt/cwiz/python/bin/python3 -m pip install -r requirement.txt

(分别安装)

/opt/cwiz/python/bin/python3 -m pip install django==2.1.1

打包下载插件包:

安装某个插件包:

/opt/cwiz/python/bin/python3 -m pip install --download ~/wheelhouse django==2.1.1

或安装多个

/opt/cwiz/python/bin/python3 -m pip install --download scipy==1.2.0 -d=~/wheelhouse

注:如果你使用了新版本的pip 18.0 ,就可以使用download命令来代替pip install --download命令:

/opt/cwiz/python/bin/pip3 download -d ~/wheelhouse django==2.1.1

/opt/cwiz/python/bin/python3 -m pip download -d ~/wheelhouse django==2.1.1

安装python依赖包

将192.168.0.8上的wheelhouse文件夹和requirement.txt文件压缩打包,复制到不可联网的目标机器上

方式一:

需要将python安装到指定的目录,本例中将项目相关python依赖包全部安装到~/wheelhouse文件夹下,并将wheelhouse和依赖包版本列表文件requirement.txt压缩到py_assembly.tar.gz压缩包中

然后再安装到python,解压py_assembly.tar.gz得到一个requirements.txt和一个wheelhouse文件夹,使用以下命令安装到python:

/opt/cwiz/python/bin/python3 -m pip install -r requirements.txt --no-index --find-links=~/wheelhouse

若要安装单个插件,使用:

/opt/cwiz/python/bin/python3 -m pip install scipy==1.2.0 --no-index --find-links=~/wheelhouse

方式二:

直接pip install -r requirement.txt将相应依赖包安装到python

将安装好的离线安装包压缩

cd /opt/cwiz/
tar -zcvf python3.6.5-offline5.tar.gz python

安装python离线安装包

使用配置好后的python3.6.5-offline5.tar.gz(解压即用)或者通过以上方式进行安装

附:本例中python离线安装包下载地址:https://download.csdn.net/download/u011025878/10865440

测试python

进入python交互客户端

/opt/cwiz/python/bin/python3

导入安装依赖尝试看是否正常即可

[root@centos7 ~]# /opt/cwiz/python/bin/python3
Python 3.6.5 (default, Nov 11 2018, 08:10:42) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>> 

本文中已制作好的离线安装包下载地址(目前在RedHat7和CentOS7上可完美运行):

https://download.csdn.net/download/u011025878/10865440

已安装以下依赖包:

asn1crypto==0.24.0
certifi==2016.2.28
cffi==1.11.5
cryptography==2.3.1
dateutils==0.6.6
Django==2.1.1
django-cors-headers==2.4.0
django-crontab==0.7.1
djangorestframework==3.8.2
gunicorn==19.9.0
idna==2.7
numpy==1.15.1
pandas==0.23.4
pycparser==2.18
PyMySQL==0.9.2
python-dateutil==2.7.3
pytz==2018.5
six==1.11.0
SQLAlchemy==1.2.11
elasticsearch==6.3.1
tensorflow==1.10.0

猜你喜欢

转载自blog.csdn.net/u011025878/article/details/85157274