322

我正在使用 PyCharm 来处理一个项目。该项目已打开并配置了解释器,并且可以成功运行。远程解释器路径已正确映射。这似乎是正确的配置,但 PyCharm 使用“未解决的引用”错误突出显示我的有效代码,即使对于内置 Python 函数也是如此。为什么这些似乎没有被检测到,即使代码运行?有什么方法可以让 PyC​​harm 正确识别这些?


这个问题的具体实例与远程解释器有关,但问题也出现在本地解释器上。

4

29 回答 29

487

文件 | 使缓存无效...并重新启动 PyCharm 会有所帮助。

于 2012-08-02T08:12:08.597 回答
148

德米特里的回应对我不起作用。

我通过转到项目解释器,选择“路径”选项卡,然后点击该子菜单中的刷新按钮来开始我的工作。它自动填充了一种叫做“python-skeletons”的东西。

编辑:使用 PyCharm 3.4.1 的屏幕截图(隐藏得很好)

在此处输入图像描述

于 2013-11-16T18:50:34.453 回答
82

有很多解决方案,有些比其他的更方便,但它们并不总是有效。

以下是您可以尝试的所有方法,从“快速”到“烦人”:

  • 执行File->Invalidate Caches / Restart并重新启动 PyCharm。
    • 您也可以在以下任何一种方法之后执行此操作,以确保这一点。
  • 首先,检查您正在运行的解释器:Run-> Edit Configurations-> Configuration-> Python Interpreter
  • 刷新解释器的路径:
    • File->Settings
    • Project: [name]-> Project Interpreter-> '项目解释器':齿轮图标 ->More...
    • 单击“显示路径”按钮(底部)
    • 单击“刷新”按钮(底部)
  • 删除解释器并再次添加:
    • File->Settings
    • Project: [name]-> Project Interpreter-> '项目解释器':齿轮图标 ->More...
    • 单击“删除”按钮
    • 单击“添加”按钮并重新添加您的解释器
  • 删除您的项目首选项
    • 删除项目的.idea文件夹
    • 关闭并重新打开 PyCharm
    • 从头开始打开您的项目
  • 删除您的 PyCharm 用户首选项(但先备份它们)。
    • ~/.PyCharm50在 Mac 上
    • %homepath%/.PyCharm50在 Windows 上
  • 切换到另一个口译员,然后再回到您想要的口译员。
  • 创建一个新的虚拟环境,并切换到该环境的解释器。
  • 在项目文件夹之外的新位置创建一个新的虚拟环境,然后切换到该环境的解释器。
  • 完全切换到另一个口译员;不要切换回来。

如果您使用的是 Docker,请注意:

  • 确保您使用的是pip3not pip,尤其是远程 docker 和 docker-compose 解释器。
  • 避免影响PYTHONPATH。更多信息:https ://intellij-support.jetbrains.com/hc/en-us/community/posts/115000058690-Module-not-found-in-PyCharm-but-externally-in-Python 。

如果上述方法对您不起作用,但您确实找到了另一个技巧,请发表评论。

于 2016-03-09T16:16:11.270 回答
32

就我而言,它是目录结构。我的项目如下所示:

+---dir_A
    +---dir_B
        +app
        |
        \-run.py

所以右键单击 dir_b > “将目录标记为” > “项目根目录”

于 2015-02-24T12:37:49.410 回答
19

您必须将根目录标记为:( SOURCE ROOT红色),并将您的应用程序 标记为:(EXCLUDED ROOT蓝色)。

然后未解析的引用将消失。如果您使用 PyChram pro,它会自动为您执行此操作。

在此处输入图像描述

于 2019-06-12T05:30:37.297 回答
13

当无效缓存或刷新路径不起作用时,我发现自己删除并重新添加远程解释器以解决此问题。

我使用 vagrant,并且每隔一段时间,如果我在我的多虚拟机设置中添加一个新的虚拟机,转发的端口就会改变,当 PyCharm 尝试使用错误的端口进行 SSH 时,这似乎会让 PyC​​harm 感到困惑。更改端口似乎对损坏的引用没有帮助。

于 2014-03-21T15:51:41.863 回答
11

如果其他解决方案都不适合您,请尝试(备份)并删除您的 ~/.PyCharm40 文件夹,然后重新打开 PyCharm。这也会扼杀你所有的偏好。

在 Mac 上,您要删除 ~/Library/Caches/Pycharm40 和 ~/Library/Preferences/PyCharm40。

在 Windows 上:C:\Users\$USER.PyCharm40。

于 2015-04-16T03:51:15.710 回答
11

按照以下步骤使用 PyCharm 4.0.6 (OSX 10.10.3) 进行测试:

  1. 单击 PyCharm 菜单。
  2. 选择项目解释器。
  3. 选择齿轮图标。
  4. 选择更多按钮。
  5. 选择您所在的项目解释器。
  6. 选择目录树按钮。
  7. 选择重新加载路径列表。

问题解决了!

于 2015-05-11T09:27:56.040 回答
7

很抱歉提出这个问题,但是我有一个重要的更新要做。

如果您使用的是除此之外的任何其他版本,您可能还希望将项目解释器恢复为 Python 2.7.6 在其他建议都没有解决我的问题之后,这在我的 PyCharm 4.04 专业版的 Ubuntu 安装上对我有用。

于 2015-01-14T07:07:29.403 回答
5

以更简单的动作为我工作:


File > Settings > Project > Project Interpreter 
> Select "No interpreter" in the "Project interpreter" list 
> Apply > Set your python interpreter again > Click Apply

利润 - Pycharm 正在更新骨架,一切都很好。

于 2019-12-26T13:25:34.823 回答
4

您可以尝试关闭 Pycharm,.idea从项目中删除该文件夹,然后再次启动 Pycharm 并重新创建项目。这对我有用,而使缓存无效却没有。

于 2015-12-28T22:25:46.197 回答
4

如果您只想忽略一些“未解决的引用”错误,您还可以通过将其放在您的类/方法/函数前面来明确告诉它 PyCharm:

# noinspection PyUnresolvedReferences
于 2018-12-18T12:14:38.047 回答
3

在提出的解决方案都不适合我之后,我终于得到了这个工作。我正在玩一个 django rest 框架项目,并且正在使用我设置的 virtualenv。我可以通过将根文件夹标记为源根来修复 Pycharm,但是 django 的服务器会抛出解析异常。因此,当另一个不工作时,一个会起作用,反之亦然。

最终,我只需要将子文件夹标记为 pycharm 中的源根目录。所以我的结构是这样的

-playground
     -env
     -playground

第二个游乐场文件夹是我必须将其标记为源根目录的文件夹,以使所有内容都能按预期工作。这对我的方案没有任何问题,因此这是一个可行的解决方案。

只是想我会分享以防其他人可以使用它。

于 2016-04-12T23:10:19.497 回答
3

这也可能是python版本问题。我必须选择合适的才能让它发挥作用。 在此处输入图像描述

于 2016-05-14T19:47:39.890 回答
3

没有一个答案解决了我的问题。

它对我来说是切换环境并回到相同的环境。File->Settings->Project interpreter

我正在使用 conda 环境。

于 2019-07-30T19:59:48.373 回答
1

我关闭了所有其他项目并在 Pycharm 中单独运行我需要的项目。我从 pycharm 创建了一个单独的 virtualenv,并使用 pip 在其中添加了所有必需的模块。我在项目的解释器中添加了这个虚拟环境。这解决了我的问题。

于 2016-04-01T10:25:26.783 回答
1

哎呀,真是一场噩梦,我融合了不同的 StackOVerflow 答案:

  1. 切换到本地解释器 /usr/bin/pythonX.X 并应用
  2. 查看类似上述答案的路径
  3. 寻找骷髅路径。我的是(/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. 如果没有自动显示,切换回 virt 解释器并手动添加骨架路径。
于 2016-10-12T09:02:48.983 回答
1

以上解决方案都不适合我!
如果您为项目使用虚拟环境,请确保将python.exe虚拟环境目录中的文件应用为项目的解释器,(Alt + Ctrl + Shift + S) 这为我解决了这个问题。

于 2017-03-22T12:46:12.487 回答
1

在我的情况下,由于 python 代码的一个非常特殊的情况而出现了检查错误。包含两个 numpy 函数和两个列表访问的 min 函数使我的代码检查出现这种错误。

在以下示例中删除 'd=0' 行会按预期提供未解决的引用错误,但读取不会使代码检查器的错误消失。之后我仍然可以毫无问题地执行代码。

import numpy as np
def strange(S, T, U, V):
    d = 0
    print min(np.abs(S[d]), np.abs(T[d]), U[d], V[d])

清除缓存和重新加载路径列表不起作用。仅使用以下示例补丁之一更改代码才有效:

  • “最小”参数的另一种排序:示意性 SUTV,但不是 STUV 或 TSUV
  • 使用方法而不是函数: S[d].abs() 而不是 np.abs(S[d])
  • 使用内置 abs() 函数
  • 将数字添加到选择的参数:U[d] + 0。
于 2017-12-21T13:20:10.513 回答
1

我的问题是PyCharm没有解决Flask-WTF。我尝试重新安装,然后安装或使缓存无效并重新启动PyCharm,但它仍然无法正常工作。

然后我想出了这个解决方案,它非常适合我。

  1. 通过Ctrl+Alt+S (Windows)打开Project Interpreter,然后单击Install (+) a new package。

在此处输入图像描述

  1. 键入 PyCharm 无法解析的包,然后单击Install Package。然后单击确定

在此处输入图像描述

现在,您将看到您的库已解决。

于 2020-03-19T12:48:21.580 回答
1

在 Windows 10 10.0 上的 PyCharm 2020.1.4(社区版)中。在 PyCharm 中的设置下:文件 > 设置 > 项目结构我在项目结构中进行了两项更改:标记为源的主文件夹和 odoo 文件夹,其中包含我排除的所有应用程序屏幕截图显示了我所做的。之后我重新启动了 PyCharm:文件 > 使缓存无效/重新启动...

未解决的引用错误已删除 项目结构

未解决的参考错误

于 2020-07-26T11:05:16.927 回答
1

按照其他答案的建议使缓存无效对我不起作用。我发现我的问题是 PyCharm 将 Python 包的 init.py 文件标记为文本,因此未将它们包括在分析中,这意味着 python 解析无法正常工作。

我的解决方案是:

打开 PyCharm 设置 Navigate to Editor -> File Types Find Python and add __init__.pyto the list of python files or Find Text and delete __init__.pyfrom the list of text files

在此处输入图像描述

于 2021-03-19T02:18:16.820 回答
0

如果您使用vagrant的错误可能是由错误的python解释器引起的。在vagrant我们正在使用的我们中,pyenv所以我不得不将Python Interpreter path路径/usr/bin/python/home/vagrant/.pyenv/versions/vagrant/bin/python 在此处输入图像描述

于 2018-09-03T12:28:03.680 回答
0

我有一个项目,其中一个文件在src/同一目录中导入另一个文件。要让 PyC​​harm 识别,我必须转到文件 > 设置 > 项目 > 项目结构 > 选择src文件夹并单击“标记为:来源”

来自https://www.jetbrains.com/help/pycharm/configuring-folders-within-a-content-root.html

源根包含实际的源文件和资源。PyCharm 使用源根作为解析导入的起点

于 2020-03-07T22:45:29.170 回答
0

我不得不去 File->Invalidate Caches/Restart,重新启动 Ubuntu 18.04 LTS,然后在它清除之前再次打开 Pycharm 和 File->Invalidate Caches/Restart。

于 2020-12-15T05:41:11.310 回答
0

对我来说,它有帮助:更新您的主目录“将目录标记为”->“源根目录”

于 2021-01-11T12:04:29.300 回答
0

@kelorek 为我工作,但在此之前,在 interpereter 路径中我必须添加一些路径。让我们说

from geometry_msgs.msg import Twist

下划线为错误,然后在 python 的远程机器中运行:

help("geometry_msgs")

最后会有路径让我们说:

/opt/ros/foxy/lib/python3.8/site-packages/geometry_msgs/__init__.py

所以你的解释器pycharm路径添加

/opt/ros/foxy/lib/python3.8/site-packages

希望它会帮助你,它会帮助我:)

于 2021-03-02T00:36:58.530 回答
0

我有同样的症状。在我的例子中,问题的根源是我在自定义属性中设置了idea.max.intellisense.filesize=50。我可以通过将其设置为 100 来解决它。

帮助->编辑自定义属性

于 2021-05-05T08:19:11.983 回答
-1

你在使用虚拟环境吗?

如果是这样,您需要通知 PyCharm 所需的 python.exe 位置的每次更改(对于 PyCharm 来说,仅仅 ./activate 是不够的)

确保 Pycharm 指向正确的解释器和包:文件 -> 设置 -> 项目 -> 项目解释器。单击齿轮并选择 virtualenv 的 Scripts 文件夹下的 python.exe

在此处输入图像描述

于 2018-02-26T09:54:09.357 回答