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

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


此问题的具体实例是远程解释器,但本地解释器也会出现此问题。

249970 次浏览

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

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

我打开Project Interpreters,选择“Paths”选项卡,然后点击子菜单中的刷新按钮。它自动填充了一种叫做“蟒蛇骨架”的东西。

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

enter image description here

当失效缓存或刷新路径不起作用时,我发现自己删除并重新添加远程解释器来修复这个问题。

我使用vagrant,每隔一段时间,如果我添加一个新的虚拟机到我的多虚拟机设置,转发的端口改变,这似乎使PyCharm混淆,当它试图使用错误的SSH端口时。更改端口似乎并不能帮助损坏的引用。

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

如果你使用的是Python 2.7.6以外的版本,你可能还想把你的项目解释器恢复到Python 2.7.6。在我安装PyCharm 4.04 professional时,这对我来说很有效,因为其他的建议都不能解决我的问题。

在我的例子中,它是目录结构。 我的项目看起来像这样:

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

右键点击dir_b >将目录标记为>项目根目录

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

在Mac上,你需要删除~/Library/Caches/Pycharm40和~/Library/Preferences/ Pycharm40。

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

用PyCharm 4.0.6测试(OSX 10.10.3)

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

问题解决了!

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

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

以下是你可以尝试的,从“快速”到“烦人”:

  • Do File ->Invalidate Caches / Restart并重新启动PyCharm。
    • 为了确保安全,您还可以在以下任何方法之后执行此操作。
  • 首先,检查你正在运行的解释器:Edit ConfigurationsConfigurationPython Interpreter
  • 刷新解释器路径:
    • FileSettings
    • Project: [name]Project Interpreter→“项目解释器”:齿轮图标>More...
    • 点击“显示路径”按钮(底部一个)
    • 点击“刷新”按钮(底部)
  • 删除解释器并重新添加:
    • FileSettings
    • Project: [name]Project Interpreter→“项目解释器”:齿轮图标>More...
    • 点击“移除”按钮
    • 点击“添加”按钮,重新添加你的interpeter
  • 删除项目首选项
    • 删除项目的.idea文件夹
    • 关闭并重新打开PyCharm
    • 从头打开项目
  • 删除您的PyCharm用户首选项(但先备份它们)。
    • Mac上的~/.PyCharm50
    • Windows上的%homepath%/.PyCharm50
  • 切换到另一个解释器,然后再返回到您想要的解释器。
  • 创建一个新的虚拟环境,并切换到该环境的解释器。
  • 创建一个新的虚拟环境在一个新的地点——在你的项目文件夹之外——并切换到该环境的解释器。
  • 完全切换到另一个解释器;不要换回去。

如果你正在使用Docker,请注意:

如果上面的方法对你不起作用,但你发现了另一个技巧,那么请留下评论。

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

在所有建议的解决方案都不适合我之后,我终于让它工作了。我正在玩一个django rest框架项目,并使用了我已经设置好的virtualenv。我可以通过将根文件夹标记为源根来修复Pycharm,但是django的服务器会抛出解析异常。所以一个会工作,而另一个不会,反之亦然。

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

-playground
-env
-playground

第二个playground文件夹是我必须标记为源代码根以便一切正常工作的文件夹。这在我的场景中没有出现任何问题,所以这是一个可行的解决方案。

我只是想分享一下,以防别人用。

也可能是python版本问题。我得选对人,才行。 enter image description here < / p >

天哪,这是一个噩梦,我的不同的StackOVerflow答案的合并:

  1. 切换到本地解释器/usr/bin/pythonX.X和应用
  2. 像上面那样查看路径
  3. 找到骷髅的路径。我的是(/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeleton)
  4. 切换回virt解释器,并手动添加骷髅路径,如果它没有自动显示。
以上的方法对我都没用!< br > 如果你在项目中使用虚拟环境,请确保应用虚拟环境目录中的python.exe文件作为项目(Alt + Ctrl + Shift + S)的解释器 这为我解决了问题
在我的情况下,检查错误显示由于python代码的一个非常具体的情况。 包含两个numpy函数和两个列表访问的min函数会使我的代码检查给出这种错误。< / p >

在下面的例子中删除'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”参数的另一种顺序:简图上的S U T V,但不是S T U V或T S U V
  • 使用方法而不是函数:S[d].abs()而不是np.abs(S[d])
  • 使用内置的abs()函数
  • 将一个数字添加到所选参数:U[d] + 0。

你在使用virtualenv吗?

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

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

下的python.exe

enter image description here

如果你正在使用vagrant,这个错误可能是由错误的python解释器引起的。 在我们的vagrant中,我们使用的是pyenv,所以我必须将Python Interpreter path路径从/usr/bin/python更改为/home/vagrant/.pyenv/versions/vagrant/bin/python enter image description here < / p >

如果你只想忽略一些“未解决的引用”错误,你也可以通过在你的类/方法/函数前显式地告诉它PyCharm:

# noinspection PyUnresolvedReferences
你必须将根目录标记为: SOURCE ROOT(红色), 以及您的应用: EXCLUDED ROOT(蓝色). < / p >

那么未解决的引用就会消失。如果你使用PyChram pro,它会自动为你做这个。

enter image description here

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

对我来说有用的是切换环境,然后回到相同的环境。File->Settings->Project interpreter

我使用conda环境。

更简单的操作:

  • 文件比;设置在项目比;项目翻译
  • 选择“无解释器”;在“项目口译员”;列表
  • 应用在重新设置python解释器>单击Apply

Profit - Pycharm正在更新骨架,一切正常。

我有一个项目,其中src/中的一个文件导入同一目录中的另一个文件。为了让PyCharm识别,我必须去文件>设置>项目>项目结构>选择src文件夹,然后点击“标记为:源”

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

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

我的问题是Flask-WTF不能被PyCharm解决。我已经尝试重新安装,然后安装或使缓存无效并重新启动 PyCharm,但它仍然不工作。

然后我想到了这个解决方案,它对我来说非常有效。

  1. 通过Ctrl + Alt + S (Windows)打开项目翻译,然后单击安装(+)一个新包。

enter image description here

  1. 输入PyCharm无法解析的包,然后单击安装包。然后单击好吧

enter image description here

现在,您将看到库已被解析。

在Windows 10 10.0上的PyCharm 2020.1.4(社区版)中。在PyCharm的设置下:File >设置在项目结构 我对Project Structure做了两个改动: 主文件夹标记为源和 odoo文件夹与我排除的所有应用程序 截图显示了我所做的。 之后,我重新启动PyCharm: File >

. Invalidate Caches / Restart

未解决的引用错误被删除 项目结构 < / p >

未解决的引用错误

我必须去文件->无效缓存/重新启动,重新启动Ubuntu 18.04 LTS,然后打开Pycharm和文件->使缓存无效/在它清除之前重新启动。

对我来说很有帮助: 更新您的主目录“;标记目录为”;→“源root" < / p >

@kelorek适用于我,但之前,在互指针路径中,我必须添加一些路径。 让说< / p >

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

希望它能帮助你,也帮助我:)

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

我的解决方案是:

打开PyCharm设置 导航到编辑器->文件类型 找到Python并将__init__.py添加到Python文件列表中 查找Text并从文本文件列表中删除__init__.py

enter image description here

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

帮助-编辑自定义属性

再添加一个:涉及Python解释器选项卡的解决方案都没有帮助,然而,我注意到我必须设置项目依赖项:在有unresolved reference错误的项目中,没有任何依赖项被检查。一旦我检查了,相关的错误就消失了。我不知道为什么一开始就检查了一些,而另一些没有。

enter image description here

我通过检查PyCharm中的继承全局站点包来解决

文件→设置→项目翻译->添加本地解释器->继承全局站点包