场景形容
做一个假如,您的生产环境(或者说线上环境)是处于内网的主机,且不能出外网(也就是不能上网),但又须要装置 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/
搜寻 pip
查看以往的版本
须要找到反对 python2.7 的 pip
下载源码包
依照同样的套路,下载 setuptools 的源码包
装置 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
写在最初
好了!笔者曾经把认为最疾速、最不便、最优雅、最没那么遭罪的装置方法分享完结了。如果您认为不是最好的办法,欢送来怼我,更欢迎您能够来稿,把您认为最好的装置办法分享进去,有稿费哦。好了,就此搁笔,望宽广敌人能多多关注咱们,望多多点赞、转发,非常感谢!