不可出外网的主机如何快速、方便、优雅的安装Python库?

场景描述

做一个假设,您的生产环境(或者说线上环境)是处于内网的主机,且不能出外网(也就是不能上网),但又需要安装Python的第三方库,怎么办?在本篇文章中,笔者拿安装Flask库(轻量级web框架)来讲解,经分析Flask本身还依赖了其他众多的库。依赖了有多少,依赖的是哪些,这些目前都是未知的。下面笔者把认为最快速、最方便、最优雅、最没那么遭罪的安装办法进行分享,希望可以做到抛砖引玉的效果,如果您有更好的安装方法,笔者非常希望您能来稿进行分享。

确认线上主机的Python版本

下面操作是为了确认线上主机的python版本

# python --version
Python 2.7.5

比如笔者的是python2.7.5

接着在本地主机确认python版本

下面操作是在自己的本地测试机上进行

# 确认python版本
[root@host-for-dev soft-tmp]# python --version
Python 2.7.5
[root@host-for-dev soft-tmp]# 

# 同时确认一下确实没有安装过flask
[root@host-for-dev soft-tmp]# python
Python 2.7.5 (default, Nov 16 2020, 22:23:17) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import flask
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named flask
>>> 

运气非常好,刚好笔者本地的CentOS默认的Python也是2.7.5版本。如果不是,那么就需要编译安装一个和线上一样的版本了。


前戏结束!下面正式进入主题

下面的操作均在自己的本地测试机上进行哈

打开https://pypi.org/

image.png

搜索pip

查看以往的版本

需要找到支持python2.7的pip

下载源码包

image.png

按照同样的套路,下载setuptools的源码包

image.png

安装setuptools

unzip setuptools-44.1.1.zip
python setup.py install

接着安装pip

cd pip-20.3.4
python setup.py install

验证pip是否安装成功

[root@host-for-dev ~]# pip -V
pip 20.3.4 from /usr/lib/python2.7/site-packages/pip-20.3.4-py2.7.egg/pip (python 2.7)
[root@host-for-dev ~]# 

下载Flask的和与其有关的依赖,格式是whl格式

[root@host-for-dev soft-tmp]# mkdir flask-pak
[root@host-for-dev soft-tmp]# cd flask-pak/
[root@host-for-dev flask-pak]# 
[root@host-for-dev flask-pak]# pip download Flask
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Collecting Flask
  Downloading Flask-1.1.4-py2.py3-none-any.whl (94 kB)
     |████████████████████████████████| 94 kB 216 kB/s 
Collecting click<8.0,>=5.1
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 237 kB/s 
Collecting Jinja2<3.0,>=2.10.1
  Downloading Jinja2-2.11.3-py2.py3-none-any.whl (125 kB)
     |████████████████████████████████| 125 kB 171 kB/s 
Collecting Werkzeug<2.0,>=0.15
  Downloading Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
     |████████████████████████████████| 298 kB 54 kB/s 
Collecting itsdangerous<2.0,>=0.24
  Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting MarkupSafe>=0.23
  Downloading MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl (24 kB)
Saved ./Flask-1.1.4-py2.py3-none-any.whl
Saved ./click-7.1.2-py2.py3-none-any.whl
Saved ./Jinja2-2.11.3-py2.py3-none-any.whl
Saved ./Werkzeug-1.0.1-py2.py3-none-any.whl
Saved ./itsdangerous-1.1.0-py2.py3-none-any.whl
Saved ./MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl
Successfully downloaded Flask click Jinja2 Werkzeug itsdangerous MarkupSafe
[root@host-for-dev flask-pak]# ll
total 640
-rw-r--r-- 1 root root  82780 Jun 24 21:33 click-7.1.2-py2.py3-none-any.whl
-rw-r--r-- 1 root root  94591 Jun 24 21:33 Flask-1.1.4-py2.py3-none-any.whl
-rw-r--r-- 1 root root  16743 Jun 24 21:33 itsdangerous-1.1.0-py2.py3-none-any.whl
-rw-r--r-- 1 root root 125699 Jun 24 21:33 Jinja2-2.11.3-py2.py3-none-any.whl
-rw-r--r-- 1 root root  24348 Jun 24 21:33 MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl
-rw-r--r-- 1 root root 298631 Jun 24 21:33 Werkzeug-1.0.1-py2.py3-none-any.whl
[root@host-for-dev flask-pak]# 

关于Flask库的依赖到底有有哪些?答案很明显了,如下:

click-7.1.2-py2.py3-none-any.whl
Flask-1.1.4-py2.py3-none-any.whl # 除了Flask本身,其它的whl格式的包,都是它所依赖的。
itsdangerous-1.1.0-py2.py3-none-any.whl
Jinja2-2.11.3-py2.py3-none-any.whl
MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl
Werkzeug-1.0.1-py2.py3-none-any.whl

接着打包flask-pak目录

[root@host-for-dev soft-tmp]# tar -zcf flask-pak.tar.gz flask-pak/

自行将下面3个包上传到线上的主机(不可出外网的主机)

flask-pak.tar.gz
pip-20.3.4.tar.gz
setuptools-44.1.1.zip

上传到线上主机(不可出外网的主机)后,按照同样的套路安装好setuptools和pip,在此不再演示步骤。且到此为止,在本地测试主机的操作就此结束。


线上内网主机(不可出外网的主机)上开始安装Flask库

下面的操作请切换您的线上主机(不可出外网的主机)

接着解压flask-pak.tar.gz

[root@hngz3-YWGLXT-PRM-ser07 ~/soft_pak]#  tar -zxf flask-pak.tar.gz
[root@hngz3-YWGLXT-PRM-ser07 ~/soft_pak/flask-pak]#  ll
total 640
-rw-r--r-- 1 root root  82780 Jun 24  2022 click-7.1.2-py2.py3-none-any.whl
-rw-r--r-- 1 root root  94591 Jun 24  2022 Flask-1.1.4-py2.py3-none-any.whl
-rw-r--r-- 1 root root  16743 Jun 24  2022 itsdangerous-1.1.0-py2.py3-none-any.whl
-rw-r--r-- 1 root root 125699 Jun 24  2022 Jinja2-2.11.3-py2.py3-none-any.whl
-rw-r--r-- 1 root root  24348 Jun 24  2022 MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl
-rw-r--r-- 1 root root 298631 Jun 24  2022 Werkzeug-1.0.1-py2.py3-none-any.whl

安装Flask

# 安装
pip install Werkzeug-1.0.1-py2.py3-none-any.whl
pip install MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl
pip install Jinja2-2.11.3-py2.py3-none-any.whl
pip install itsdangerous-1.1.0-py2.py3-none-any.whl
pip install click-7.1.2-py2.py3-none-any.whl
pip install Flask-1.1.4-py2.py3-none-any.whl

注意安装顺序,先安装依赖,最后再安装Flask-1.1.4-py2.py3-none-any.whl

验证flask是否安装完成

进入python,导入flask看看是否能导入,导入成功说明安装成功

[root@hngz3-YWGLXT-PRM-ser07 ~/soft_pak/flask-pak]#  python
Python 2.7.5 (default, Oct 30 2018, 23:45:53) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import flask
>>> from flask import Flask, request

写在最后

好了!笔者已经把认为最快速、最方便、最优雅、最没那么遭罪的安装办法分享结束了。如果您认为不是最好的方法,欢迎来怼我,更欢迎您可以来稿,把您认为最好的安装方法分享出来,有稿费哦。好了,就此搁笔,望广大朋友能多多关注我们,望多多点赞、转发,非常感谢!

本文转载于:https://mp.weixin.qq.com/s/-jBbROxV4IZus97oLTyYPw

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容