一、介绍
整篇文章介绍python第三方包离线安装通用方法,单纯离线安装matplotlib,请直接跳到
三、离线安装matplotlib
我们知道python安装第三方包可以用pip install package
、conda install package
等命令,但实际中总有些不可抗力导致这些命令不能用,这时就需要离线安装第三方包。
离线安装包可以在
https://pypi.org/
https://repo.anaconda.com/pkgs/
https://www.lfd.uci.edu/~gohlke/pythonlibs/
等网站下载到,是.whl
格式的文件。
https://www.lfd.uci.edu/~gohlke/pythonlibs/ 这个网站貌似打不开了,请直接跳到 【二、通用方法】(2024-11-16 21:02)
####################################################################################################
这里选择 https://www.lfd.uci.edu/~gohlke/pythonlibs/,因为所有链接都在一个页面,搜索比较方便。它由荧光动力学实验室维护,隶属于美国国立卫生研究院加利福尼亚大学生物医学荧光光谱研究中心。
这是它的第三方包列表:
找到matplotlib,点击跳转到详细列表,如下图,注意,这里已经列出matplotlib的依赖包(离线安装要手动安装一大堆依赖包),需要将依赖包的离线安装包也下载到本地,但依赖包的安装顺序必须正确,否则会失败。
####################################################################################################
二、通用方法
我们先去 https://pypi.org/ 下载离线包
在搜索框搜索你的包名称,这里是 matplotlib
搜索结果中选和你的包名一摸一样的,这里是第一个:
点进去后,如需要历史版本可以在 Release history 中选择:
选好版本后,选 Download files
进一步找到你想要的离线包
我们要选择构建好的 .whl
文件,即轮子(wheel)的缩写
需注意的是,有的依赖包也有依赖包,也需要按顺序安装,后面会讲到。
离线安装包的命名说明:
(以 matplotlib-3.9.2-cp313-cp313-win_amd64.whl 为例)
matplotlib
是依赖包名称。3.9.2
是依赖包的版本号。- 第一个
cp313
是 Python 标签(Python tag),是支持的python版本号,代表适配python3.13.x 。 - 第二个
cp313
是 ABI 标签(ABI tag),指出与特定的 Python 实现及其版本兼容。ABI 是指程序之间交互的二进制接口标准。这里意味着这个包是用与 CPython 3.13 兼容的方式构建的,也就是说它所包含的任何二进制文件(比如编译后的 C 扩展)都是用与 CPython 3.13 兼容的方式构建的。 win_amd64
是操作系统,代表windows 64位。
小知识:
我们发现还有一种是类似matplotlib-3.9.2-pp39-pypy39_pp73-win_amd64.whl
的版本表示,不同的是他的 Python tag 是pp39
,ABI tag 是pypy39_pp73
。这里的 pp39 表示它是为 PyPy 3.9 设计的。对于 CPython(标准 Python 实现),这里会是如 cp39 这样的标签,表示 CPython 3.9。
后面的 ABI tag中,pypy39 再次确认了这是为了 PyPy 3.9 设计的,而 pp73 则指出了 ABI 兼容性,这通常涉及到 Python 的内部接口和编译方式等细节。对于 CPython,这部分是类似 cp39、cp39-cp39 或者 cp39-abi3。
继续说依赖包的安装顺序,介绍一个比较通用的方法,不仅安装matplotlib,其他第三方包也适用,就是有点麻烦。
首先下载好matplotlib的离线包,在windows终端执行以下命令,package_name是第三方包的路径,建议在你的第三包目录执行,少敲几下键盘 :)
# pip install matplotlib-3.4.3-cp38-cp38-win_amd64.whl
pip install [package_name]
会报错缺少依赖包,如下图,查看报错是缺少numpy包,而且提示numpy版本要>=1.16,接下来安装numpy包,numpy包的下载方法同上。
numpy包安装成功,继续尝试安装matplotlib包,会告诉你接下来要安装什么包。
这里有个注意点,就是cycler包依赖six包,接下来安装cycler会失败,要先安装six包,再安装cycler包,然后再尝试matplotlib。
按照这个方法,最后安装成功。
三、总结
matplotlib第三方包的安装顺序为:
numpy、six、cycler、pillow、dateutil、kiwisolver、pyparsing、matplotlib
经多次试验,每次安装的顺序不固定,原因是没有其他依赖的包安装顺序不固定。
而且pillow包在推荐的依赖包里是没有的,可能原因是matplotlib升级导致的,因为荧光动力学实验室不是matplotlib的开发者,所以没有及时更新。
所以离线安装第三方包,推荐使用试错法,递归地安装依赖包,网上推荐的依赖包列表和顺序可能随着matplotlib升级而失效。