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

简介: 不可出外网的主机如何快速、方便、优雅的安装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/

搜索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

写在最后

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

相关文章
|
6月前
|
Linux 计算机视觉 C++
【解决方案】Building wheel for opencv-python:安装卡顿的原因与解决方案
当你安装OpenCV时,命令行停在Building wheel for opencv-python (PEP 517) ... -似乎卡住了。这并非程序假死,而是其编译耗时巨大。本文将揭示原因,并提供优化安装体验的实用方法。
858 88
|
4月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
796 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
4月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
372 0
|
6月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
3月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
348 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
3月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
390 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
4月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
553 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
5月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
355 18
|
5月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
512 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
5月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
490 0

推荐镜像

更多