导入错误:无法从'click.core'中导入'ParameterSource'名称

4
我正在开发一个简单的Flask应用程序,但是我收到了这个错误。
    from click.core import ParameterSource
ImportError: cannot import name 'ParameterSource' from 'click.core' (/usr/local/lib/python3.10/dist-packages/click/core.py)

我不知道为什么它会出现,因为一切都很好,然后突然...

这是我使用的版本:

black 23.1.0
click 8.1.3
Flask 2.2.3
Python 3.10.6
pip 22.0.2

我一直在寻找解决方案,发现很多人都无法处理这个问题,唯一的建议是更新 Click 和 black 到最新版本,但我已经使用了最新版本。

我该怎么办?有没有任何方法可以完全不使用 Click?

更新:

以下是完整错误信息的样子。

Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 187, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.10/runpy.py", line 146, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/lib/python3.10/runpy.py", line 110, in _get_module_details
    __import__(pkg_name)
  File "/home/diametr/.local/lib/python3.10/site-packages/flask/__init__.py", line 5, in <module>
    from .app import Flask as Flask
  File "/home/diametr/.local/lib/python3.10/site-packages/flask/app.py", line 34, in <module>
    from . import cli
  File "/home/diametr/.local/lib/python3.10/site-packages/flask/cli.py", line 15, in <module>
    from click.core import ParameterSource
ImportError: cannot import name 'ParameterSource' from 'click.core' (/usr/local/lib/python3.10/dist-packages/click/core.py)

ParameterSource 是3年前添加的。您是否将此 Flask 应用程序部署到另一台服务器上?您确定它们的版本兼容吗? - Tim Roberts
我并不打算在任何地方部署它,我只是在本地运行它。你所说的版本兼容性是什么意思? - Diana
你的抱怨没有意义。我理解错误,但除非文件已被修改,否则它就在源代码中。如果你查看文件(路径在错误中),你会找到 ParameterSource 吗? - Tim Roberts
那么,如果 python3.10 中没有 dist-packages 文件夹怎么办?python3.10 中唯一的文件夹是 site-packages - Diana
你必须要找到/usr/local/lib/python3.10/dist-packages这个路径。确定你在正确的位置查找了吗? - Tim Roberts
你已经解决了这个问题吗?我也遇到了同样的错误(使用Python 3.8,click 8.1.3),但是还找不到解决方法。 - Roman Stadlhuber
5个回答

7
请尝试以下步骤:
 pip uninstall black
 pip uninstall click
 pip install black
 pip install click

3
我已经尝试过了,但它没有起作用。 - Diana

0

您可以对服务器进行软重启。请使用

sudo reboot

0
请尝试以下步骤:
sudo apt purge python3-click
pip install click

你好,请不要只发布代码,还要解释为什么你认为这是最佳解决方案。人们应该从你的答案中学习,如果他们只是复制粘贴代码而不知道为什么应该使用它,那么学习就不会发生。 - undefined

0
创建了另一个环境并在那里启动了我的笔记本电脑,我能够以这种方式解决它。

你的回答目前写得不够清楚。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到更多关于如何撰写好回答的信息。 - undefined

-1
我遇到了同样的问题。但是当我改变了当前工作目录,问题就消失了。也许是点击调用了PWD作为第一个调用例程。

根据目前的写法,你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解这个回答如何解决所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接