路径库中的 pathlib 库错误。Path.home() :类型对象'Path'没有属性'home'



所以我刚刚将matplotlib更新为版本3.0.2。我可以很好地导入matplotlib,但是当我尝试使用import matplotlib.pyplot时,我会得到:

---------------------------------------------------------------------------
AttributeError                            
Traceback (most recent call last) <ipython-input-3-864e826dab68> in <module>()
----> 1 import matplotlib.pyplot
/usr/local/lib/python3.6/dist-packages/matplotlib/pyplot.py in <module>()
     30 from cycler import cycler
     31 import matplotlib
---> 32 import matplotlib.colorbar
     33 import matplotlib.image
     34 from matplotlib import rcsetup, style
/usr/local/lib/python3.6/dist-packages/matplotlib/colorbar.py in <module>()
     30 import matplotlib.collections as collections
     31 import matplotlib.colors as colors
---> 32 import matplotlib.contour as contour
     33 import matplotlib.cm as cm
     34 import matplotlib.gridspec as gridspec
/usr/local/lib/python3.6/dist-packages/matplotlib/contour.py in <module>()
     16 import matplotlib.colors as mcolors
     17 import matplotlib.collections as mcoll
---> 18 import matplotlib.font_manager as font_manager
     19 import matplotlib.text as text
     20 import matplotlib.cbook as cbook
/usr/local/lib/python3.6/dist-packages/matplotlib/font_manager.py in <module>()
    133 
    134 if not USE_FONTCONFIG and sys.platform != 'win32':
--> 135     OSXFontDirectories.append(str(Path.home() / "Library/Fonts"))
    136     X11FontDirectories.append(str(Path.home() / ".fonts"))
    137 
AttributeError: type object 'Path' has no attribute 'home'

我在Ubuntu 18.04 Lts上,在Jupyter Lab上0.35.4,python3.6.7。

附带信息/问题:今天早上安装Jupyter Lab之前,我使用的是jupyter笔记本,其中python3.6.0。现在,内核说它正在使用Python3.6.7,尽管我似乎在系统上的任何地方都找不到它。

被告知,当我导入其他不依赖matplotlib.pyplot的其他内容时,一切都可以很好地工作。例如,如果我尝试Seaborn,它会将我返回相同的属性错误。

编辑实际上,pathlib库发生了错误。无论我是否在朱皮特,都会发生这种情况。复制它:

from pathlib import Path
Path.home() 

错误与以前相同:

AttributeError: type object 'Path' has no attribute 'home'

我最近在此打了Matplotlib试图导入和使用Pathlib和失败的地方,因为我的Virtualenv是3.6它在呼叫的mkdir()丢失了已有的exists_ok可选参数。

事实证明,我正在使用的一个模块,即OpenAPI-Spec-validator版本0.2.6,下载了Pathlib(3.4类型)的副本,并将其粘贴在基本站点包装文件夹中最终由matplotlib而不是标准库版本使用。在我的情况下,将其升级到0.2.7修复了,因为该版本未下载并将文件放在那里。

但是,如果您不使用openapi-spec-validator,并且遇到此问题检查以查看环境周围是否有额外的pathlib.py副本。

如果您的环境包含多个版本的python,请检查您的环境当前正在使用PIP SHOW。

pip show pathlib

如果指向Python&lt; 3.5的Pathlib,请将PythonPath修改为Python预期版本的Point Pathlib。

您可以通过SYS.Path进一步检查Python包的目录列表。如果它比预期版本更早显示了意外版本的Python的目录,这就是您的环境导入旧Pathlib的原因。

import sys
sys.path

我能够通过在我使用python并遇到此错误的环境中执行pip uninstall pathlib来解决此问题。

这应该适用于使用Python&gt; = 3.5

的任何人

问题的原因是,从Python 3.5及以后,Pathlib与Python的所有标准库捆绑在一起。这将是具有Path.home()的较新版本。但是,如果出于某种原因,像我一样,您还通过pip安装了pathlib,则它将是没有pathlib.Path.home()的较旧版本,因此当调用home()时会断开。

使用pip uninstall pathlib卸载Pathlib之前,请确保:

  1. 实际上,您通过运行python --version
  2. 您实际上已经有一个冗余的"旧安装"。pathlib通过运行pip show pathlib

卸载matplotlib并再次安装的经典技巧呢?

pip uninstall matplotlib==3.0.2
pip install matplotlib==3.0.2

另外,如果您还没有这样做,我强烈建议您使用虚拟环境检查(例如本指南),因为您将在特定的Virtualenv中具有绝对的控制您安装/修改/卸载的软件包(不影响您的您所有项目的开发环境)。

相关内容

  • 没有找到相关文章

最新更新