Termux 安装 Matplotlib
2023-07-30 00:23:36
Termux
Matplotlib
Python

2023 年 7 月 30 日
当前Python版本3.11.4
Matplotlib 版本: 3.7.2

两种安装方式,一种使用 pip 安装,另一种直接使用 apt 安装(termux 源里有 Matplotlib),但这两种方式,目前都有一些问题。

1 使用 pip 安装 ❌

pip install matplotlib

安装 numpy

Termux 官方软件源中有 Numpy 最新版本 1.25.1, 但是 Matplotlib 使用的仍是老版本 numpy==1.23.2。

自 3.7.0 版本开始 Matplotlib 开始使用oldest-supported-numpy来构建1oldest-supported-numpy在给定的 Python 版本和平台上提供最旧的 NumPy 版本的作为构建时依赖项。

在 Python 3.11 下,numpy 版本被设为 1.23.22

也就是说,即使安装好了 Numpy,Matplotlib 也会去安装该平台上所支持的 Numpy 的最旧版本。

所以,还是避免不了去安装编译 numpy。

its-pointless 仓库也不维护了,里面的 numpy 版本为 1.20.3

Numpy 的安装这里不论

假如成功解决了 Numpy 的依赖问题,后面还有个麻烦的包要编译,在下一节详细讲。

所以使用 pip 安装 Matplotlib 暂时失败

2 使用 apt 安装 ✔️

Termux 官方软件源中是有 Matplotlib 的,输入

 先别使用这个命令安装
apt install matplotlib

在安装的最后阶段,会去安装一些 pip 包,其中contourpy安装报错

pip setup...
Writing to /data/data/com.termux/files/usr/etc/pip.conf
Setting up python-pillow (10.0.0) ...
Setting up matplotlib (3.7.2) ...
Installing dependencies through pip. This may take a while...
Collecting contourpy>=1.0.1

contourpy 1.1.0 版本需要ninja来构建,安装过程中会报一堆错误

详见 github 上关于这个问题的 issue: pip install contourpy -U (and pip install ninja -U) fail · Issue #17474

Matplotlib 需求的 contourpy 最低为 1.0.13,而 1.0.1~1.0.7 版本都是可以正常使用 pip 安装的,安装完 contourpy 就可以顺利的安装 Matplotlib 了

pip install contourpy==1.0.7

另外,还有一个 pillow 库也需要提前通过 apt 安装

总结一下:

按照顺序安装
apt install python-numpy
apt install python-pillow
pip install contourpy==1.0.7
apt install matplotlib

参考

  1. github_stats_3.7.0.rst

  2. oldest-supported-numpy/setup.cfg

  3. matplotlib/setup.py