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

写在最后

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

相关文章
|
27天前
|
调度 开发者 Python
Python中的异步编程:理解asyncio库
在Python的世界里,异步编程是一种高效处理I/O密集型任务的方法。本文将深入探讨Python的asyncio库,它是实现异步编程的核心。我们将从asyncio的基本概念出发,逐步解析事件循环、协程、任务和期货的概念,并通过实例展示如何使用asyncio来编写异步代码。不同于传统的同步编程,异步编程能够让程序在等待I/O操作完成时释放资源去处理其他任务,从而提高程序的整体效率和响应速度。
|
1月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
63 0
|
16天前
|
XML 存储 数据库
Python中的xmltodict库
xmltodict是Python中用于处理XML数据的强大库,可将XML数据与Python字典相互转换,适用于Web服务、配置文件读取及数据转换等场景。通过`parse`和`unparse`函数,轻松实现XML与字典间的转换,支持复杂结构和属性处理,并能有效管理错误。此外,还提供了实战案例,展示如何从XML配置文件中读取数据库连接信息并使用。
Python中的xmltodict库
|
23天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
56 4
|
23天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
31 2
|
2月前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
29天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
48 7
|
29天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
38 3
|
1月前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
53 5
|
1月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
36 2