解决:ImportError: cannot import name ‘cached_property‘ from ‘werkzeug‘

1,229 阅读1分钟

错误信息

Traceback (most recent call last):
  File "/Users/lifeng/python-projects/Test/pythonScripts/bin/run/runModule.py", line 8, in <module>
    from robobrowser import RoboBrowser
  File "/Users/lifeng/python-virtualenv/venv/lib/python3.9/site-packages/robobrowser/__init__.py", line 3, in <module>
    from .browser import RoboBrowser
  File "/Users/lifeng/python-virtualenv/venv/lib/python3.9/site-packages/robobrowser/browser.py", line 8, in <module>
    from werkzeug import cached_property
ImportError: cannot import name 'cached_property' from 'werkzeug' (/Users/lifeng/python-virtualenv/venv/lib/python3.9/site-packages/werkzeug/__init__.py)

解决方法

这个报错就是安装的第三方库它依赖这个包,但是在运行的时候又没有导入这个包,才引起的报错;从异常信息可以看到有很明显的提示信息,我们只需要在这个路径中的__init__.py文件中引入from werkzeug.utils import cached_property即可,示例如下:

  • 首先找到这个目录
(venv) lifeng@apple site-packages % cd werkzeug 
(venv) lifeng@apple werkzeug % ls
__init__.py        formparser.py       test.py
__pycache__        http.py         testapp.py
_internal.py        local.py        urls.py
_reloader.py        middleware      user_agent.py
datastructures.py    py.typed        useragents.py
datastructures.pyi    routing.py      utils.py
debug            sansio          wrappers
exceptions.py        security.py     wsgi.py
filesystem.py        serving.py
  • 其次看到init.py文件,去编辑打开它之后引入指定包
(venv) lifeng@apple werkzeug % vi __init__.py
  • 因为是Mac电脑,所以我直接vi打开文件,进入编辑层后,要先i下,然后在输入需要引入的包,最后别忘了wq保存下,示例如下:
from .serving import run_simple as run_simple
from .test import Client as Client
from .wrappers import Request as Request
from .wrappers import Response as Response
from werkzeug.utils import cached_property # 这是引入的包

__version__ = "2.0.2"
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
:wq

保存完成后,再去运行刚才报错的代码,发现运行成功了。这里是亲测有效


以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!

未完,待续…

一直都在努力,希望您也是!

公众号图片.jpeg