PyCharm显示有效代码的未解析引用错误


279

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


该问题的特定实例与远程解释器有关,但该问题也出现在本地解释器上。


我有同样的问题,并解决了。这里解决
Maks,2016年

Answers:


445

档案| 无效的缓存...并重新启动PyCharm会有所帮助。


3
在我的情况下,这是在PyCharm 4.0.x上工作的唯一方法。事实是,如果某个东西搞砸了并且没有刷新(有时甚至在列表中重复显示了相同的解释器),则您必须手动删除文件……我什至不得不删除一次.idea文件夹。
danius 2015年

10
这太重了。有没有办法在PyCharm 4.5中恢复旧的“刷新路径”选项?
克里斯·威瑟斯

6
如此的IDE不需要这么简单的操作,真是令人讨厌。
Eduardo Pignatelli,

3
它可以暂时工作。几分钟后,我再次收到相同的警告
Aseem

133

德米特里的回应对我没有用。

我可以通过以下方法来工作:转到项目解释器,选择“路径”选项卡,然后单击该子菜单中的刷新按钮。它会自动填充“ python-skeletons”。

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

在此处输入图片说明


6
“ Python解释器”在哪里。您是指“项目口译员”吗?我正在使用Linux,但也找不到“路径”选项卡。
2014年

1
在OSX上的PyCharm 3.4中,它是一个看起来像小文件夹树的图标,并且不显示“路径”。
丹尼尔·布什曼

12
对于仍然感到困惑的人(在PyCharm 3.4.1中):Settings > Project Settings > Project Interpreter > Project Interpreters (gear button > more) > --Select the interpreter-- > Interpreter Paths (Directory Tree button on the right) > Reload List of Paths (Blue refresh-like button)
raphaeltm

5
PyCharm 4中没有这样的刷新按钮,只有加号和减号。
dtheodor

3
@Sarah在PyCharm 4.0.4中,在“解释器路径”窗口中,我没有“路径的重新加载列表”按钮(底部的蓝色刷新图标)。另外,我在列表中看不到任何路径,并且加号和减号按钮已禁用。
Henrik Heimbuerger 2015年

70

有许多解决方案,其中一些比其他解决方案更方便,而且它们并不总是有效。

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

  • 执行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上
  • 切换到另一个解释器,然后再次返回到您想要的解释器。
  • 创建一个新的虚拟环境,然后切换到该环境的解释器。
  • 完全切换到另一个口译员,不要切换回去。

一直以来,我一直在使用此问题,但他们仍然无法可靠地修复它。您以一种或另一种方式涵盖了大部分工作的好事最终解决了该问题。有趣的是,我不时回到这个答案来找出我忘记尝试的解决方法。
Alex

3
我按照清单上的方法工作,然后删除/重新添加了对我有用的解释器。谢谢!
马克

16

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

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

因此,右键单击dir_b>“将目录标记为”>“项目根目录”


2
问题不是PyCharm无法识别项目代码。它无法识别标准的Python内置方法。
florisla

解决了我在MacOS上的PyCharm 2019.3.3的问题
samisnotinsane

11

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

如果将新虚拟机添加到多虚拟机设置中,我会不时地使用vagrant,并且转发的端口会发生更改,这在PyCharm尝试为SSH使用错误的端口时会感到困惑。更改端口似乎无济于事。


10

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

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

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


10

按照以下步骤在PyCharm 4.0.6(OSX 10.10.3)中进行了测试:

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

问题解决了!


9

好简单

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

那么未解决的参考将消失。

  • 在此处输入图片说明如果您使用PyChram pro,它将自动为您执行此操作。

5
我有pycharm pro,它没有为我执行此操作,但是在我手动正确标记了文件夹后,它起作用了
Jose

6

很抱歉碰到这个问题,但是我有一个重要的更新。

如果您使用的是其他版本,则可能还需要将项目解释器恢复为Python 2.7.6。在没有其他建议解决了我的问题之后,这对我的Ubuntu安装PyCharm 4.04 Professional很有用。


1
切换到本地Python 2解释器,然后再返回到远程Python 3解释器,这对我来说也解决了。
詹姆斯·弗莱彻

这也适用于PyCharm 5专业版。这篇文章中没有其他解决方案对我有用。我走进去Settings -> "Project Interpreters",单击齿轮,然后"More..."。选择默认的python解释器(/usr/bin/python2.7以我为例),点击"Ok""Apply"。然后返回并选择了我想使用的实际virtualenv。"Ok""Apply"再次,它的固定。
乔希

同样,FileNotFoundError仅Python-3也是如此。在File-Settings-Project-Interpreter和Run-Edit-Configurations中都设置了正确的解释器后,其中一个使错误消失了。
鲍勃·斯坦


2

在没有任何建议的解决方案对我起作用之后,我终于使这项工作奏效了。我正在玩django rest框架项目,并且正在使用我已为其设置的virtualenv。我可以通过将根文件夹标记为源根来修复Pycharm,但是django的服务器会抛出解决异常。因此,一个将在另一个不起作用时起作用,反之亦然。

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

-playground
     -env
     -playground

第二个Playground文件夹是我必须将其标记为源根目录的文件夹,以便一切正常工作。对于我的情况,这没有任何问题,因此这是一个可行的解决方案。

只是以为我愿意与他人分享,以防其他人可以使用它。


2

这也可能是python版本问题。我必须选择合适的设备才能使其正常工作。 在此处输入图片说明


2

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

# noinspection PyUnresolvedReferences

1

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


1

Geeze真是一场噩梦,我将不同的StackOVerflow合并在一起回答:

  1. 切换到本地解释器/usr/bin/pythonX.X并应用
  2. 查看以上答案的路径
  3. 查找骨骼路径。我的是(/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. 切换回virt解释器并手动添加骨骼路径(如果该路径未自动显示)。

1

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


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])

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

  • “ min”参数的另一排序:示意性显示SUTV,但不显示STUV或TSUV
  • 使用方法代替函数:S [d] .abs()代替np.abs(S [d])
  • 使用内置的abs()函数
  • 在选择的参数上加上数字:U [d] + 0。


1

为我工作了很多简单的动作


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

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


0

如果使用vagrant错误,则可能是错误的python解释器引起的。在我们vagrant使用的过程中pyenv,我不得不将Python Interpreter path路径从更改/usr/bin/python/home/vagrant/.pyenv/versions/vagrant/bin/python 在此处输入图片说明



0

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

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

  1. 通过Ctrl + Alt + S(Windows)打开项目解释器,然后单击“ 安装”(+)新包装。

在此处输入图片说明

  1. 键入PyCharm无法解析的软件包,然后单击“ 安装软件包”。然后单击“ 确定”

在此处输入图片说明

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


-1

您在使用virtualenv吗?

如果是这样,则您需要在所需python.exe的位置上发生的每次更改都通知PyCharm(仅./activate不足以实现PyCharm)

确保Pycharm指向正确的干预者和程序包:文件->设置->项目->项目解释器。单击齿轮,然后在virtualenv的Scripts文件夹下选择python.exe

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.