Matplotlib 导入错误(应为 str、bytes 或 os.PathLike 对象,而不是 PosixPath)

Matplotlib import error (expected str, bytes or os.PathLike object, not PosixPath)

我在 ubuntu 服务器上导入 matplotlib(版本 3.3.2)时遇到以下错误。

  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 904, in <module>
    rcParamsDefault = _rc_params_in_file(
  File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 803, in _rc_params_in_file
    with _open_file_or_url(fname) as fd:
  File "/usr/local/lib/python3.8/contextlib.py", line 113, in __enter__
    return next(self.gen)
  File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 777, in _open_file_or_url
    fname = os.path.expanduser(fname)
  File "/usr/local/lib/python3.8/posixpath.py", line 231, in expanduser
    path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not PosixPath

我已经尝试升级到 3.4.1,但仍然在 pip list 它显示为 3.3.2 版本。

TL;DR

已从所有安装位置卸载 matplotlib 并降级到 3.0.3

我做了什么

我在两个不同的位置安装了 matplotlib。

  1. /usr/local/lib/python3.8/站点包
  2. /home/[我的用户名]/.local/lib/python3.8/site-packages

安装在路径 2 下的软件包中的所有升级都受到影响。现在我在路径 1 中有 matplotlib 3.3.2,在路径 2 中有 3.4.1,但是 python 正在从路径 1 读取 matplotlib,因为我已经看到 [=10 的输出中给出了相同的路径=] 终端命令。我已使用 sys.path 函数将路径 2 添加到 python 路径,但错误与问题中的相同。

此时我已经从两个位置卸载了 matplotlib,并在路径 2 重新安装了 3.4.2 版本。现在 pip show matplotlib 已更改为路径 2,但它没有解决导入错误。

我再次从path-2卸载了matplotlib并重新安装了3.0.3版本的matplotlib(从3.4.2降级到3.0.3)。这解决了错误。

备注

我在另一个 ubuntu 服务器上有完全相同的配置,并且 matplotlib 3.3.2 版本可以正常工作。在这一点上,我不确定为什么它不能在这个服务器上使用 3.3.2 matplotlib,但我一定会尝试找到根本原因。