gpt4 book ai didi

python - 导入错误:无法从 'metadata' 导入名称 'importlib'

转载 作者:行者123 更新时间:2023-12-03 14:59:42 25 4
gpt4 key购买 nike

在 Anaconda 提示符下启动的 python ( Python 3.7.5 (default, Oct 31 2019, 15:18:51) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 ) session 下,我收到错误

>>> import nbconvert
Traceback (most recent call last):
File "C:\Users\user1\Anaconda\lib\site-packages\jsonschema\__init__.py", line 31, in <module>
from importlib import metadata
ImportError: cannot import name 'metadata' from 'importlib' (C:\Users\user1\Anaconda\lib\importlib\__init__.py)

有效, metadata不在 importlib
>>> import importlib
>>> dir(importlib)
['_RELOADING', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__import__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_bootstrap', '_bootstrap_external', '_imp', '_r_long', '_w_long', 'abc', 'find_loader', 'import_module', 'invalidate_caches', 'machinery', 'reload', 'sys', 'types', 'util', 'warnings']

This是我找到的唯一引用,提到在 python 3.8 中的某些情况下(奇怪?)观察到它。

编辑 1 :
我现在可以消除错误。
有一个更改可以做到这一点:删除 PYTHONPATH 中的一个字符串导致 OSError: [WinError 123] ... 的环境变量之后 >>> import nbconvert .
删除/添加该字符串,删除/恢复错误。

我不确定我是否这样做了 conda install nbconvert在激活的virtualenv(我有python 3.8.0)中也发挥了作用;在此安装之前我没有测试。

更重要的是,我无法弄清楚 OSError之间的联系。和 线路的存在 from importlib import metadata .

编辑 2 :
我有一个带有 python 3.8.0 的 virtualenv,其中 importlib没有 metadata任何一个。
所以我仍然无法弄清楚为什么会出现一行 from importlib import metadata .
C:\> conda activate opencv
C:\> conda list
...
importlib_metadata 1.1.0 py38_0 defaults
...
nbconvert 5.6.1 py38_0 defaults
...
C:\> python
Python 3.8.0 (default, Nov 6 2019, 16:00:02) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import importlib
>>> dir(importlib)
['_RELOADING', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__import__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_bootstrap', '_bootstrap_external', '_imp', '_pack_uint32', '_unpack_uint32', 'find_loader', 'import_module', 'invalidate_caches', 'reload', 'sys', 'types', 'warnings']
>>> import nbconvert
>>>

最佳答案

该问题是由库 jsonschema 中的最近更改引起的。看着 https://github.com/Julian/jsonschema/blob/master/jsonschema/init.py您会看到 2019 年 9 月 26 日发生了变化,将 pkg_resources 更改为 importlib_metadata 作为 Python <3.8 的后备。但是,这似乎不是开箱即用的。
要解决此问题,您必须将 jsonschema 包降级到更改之前的版本:

pipenv install jsonschema==3.0.2
更多信息可以在这里找到: https://blog.gaborschulz.com/my-jupyter-notebook-stopped-working.html

关于python - 导入错误:无法从 'metadata' 导入名称 'importlib',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59216175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com