ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

我有同样的问题并解决了它。 Here solution

D
Dmitry Trofimov

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


就我而言,这是在 PyCharm 4.0.x 上工作的唯一方法。事实是,如果某些事情搞砸了并且它没有刷新(有时它甚至显示相同的解释器在列表中重复了几次)你将不得不手动删除文件......我什至不得不删除 .idea 文件夹一次.
这太有分量了。有没有办法在 PyCharm 4.5 中恢复旧的“刷新路径”选项?
这么简单的操作,这样的IDE竟然不负责,真是烦人。
它暂时起作用。几分钟后,我再次收到相同的警告
公认的答案是重量级的,很可能无法解决问题的症结所在。以下是直接来自马口的信息:JetBrains - PyCharm Content Root “PyCharm 使用源根作为解决导入的起点” 我遇到的问题与标题中的完全一样,因为在某些项目中我需要使用源位于子文件夹中的文件树,然后 PyCharm 对导入感到困惑。杀死缓存可能会有所帮助,但不是正确的方法。将源目录标记为根目录,一切都很好。
I
Ilian Iliev

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

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

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

https://i.stack.imgur.com/YjxLX.jpg


“Python解释器”在哪里。你的意思是“项目口译员”吗?我正在使用 Linux,我也找不到路径选项卡。
在 OSX 上的 PyCharm 3.4 中,它是一个看起来像一个小文件夹树的图标,并且没有说“路径”。
对于仍然感到困惑的任何人(在 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)
PyCharm 4 中没有这样的刷新按钮,只有加号和减号。
@Sarah 在 PyCharm 4.0.4 中,在“解释器路径”窗口中,我没有“重新加载路径列表”按钮(底部蓝色刷新图标)。此外,我在列表中看不到任何路径,并且加号和减号按钮被禁用。
f
florisla

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

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

执行 File -> Invalidate Caches / Restart 并重新启动 PyCharm。您也可以在以下任何一种方法之后执行此操作,以确保这一点。

您也可以在以下任何一种方法之后执行此操作,以确保这一点。

首先,检查您正在运行的解释器:运行 -> 编辑配置 -> 配置 -> Python 解释器。

刷新解释器的路径:文件->设置项目:[名称]->项目解释器->“项目解释器”:齿轮图标->更多...单击“显示路径”按钮(底部一个)单击“刷新” ' 按钮(底部)

文件 -> 设置

项目:[名称] -> 项目解释器 -> '项目解释器':齿轮图标 -> 更多...

单击“显示路径”按钮(底部)

单击“刷新”按钮(底部)

删除解释器并再次添加: File -> Settings Project: [name] -> Project Interpreter -> 'Project Interpreter': Gear icon -> More... 单击“Remove”按钮 单击“Add”按钮并重新- 添加你的解释者

文件 -> 设置

项目:[名称] -> 项目解释器 -> '项目解释器':齿轮图标 -> 更多...

单击“删除”按钮

单击“添加”按钮并重新添加您的解释器

删除您的项目首选项 删除您的项目的 .idea 文件夹 关闭并重新打开 PyCharm 从头开始打开您的项目

删除项目的 .idea 文件夹

关闭并重新打开 PyCharm

从头开始打开您的项目

删除您的 PyCharm 用户首选项(但先备份它们)。 ~/.PyCharm50 在 Mac 上 %homepath%/.PyCharm50 在 Windows 上

~/.PyCharm50 在 Mac 上

Windows 上的 %homepath%/.PyCharm50

切换到另一个口译员,然后再回到您想要的口译员。

创建一个新的虚拟环境,并切换到该环境的解释器。

在项目文件夹之外的新位置创建一个新的虚拟环境,然后切换到该环境的解释器。

完全切换到另一个口译员;不要切换回来。

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

确保您使用的是 pip3 而不是 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。

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


只要我一直在使用 PyCharm,我就一直遇到这个问题,但他们仍然无法可靠地修复它。幸好您已经以一种或另一种方式完成了大部分工作,最终解决了问题。有趣的是,我如何不时回到这个答案来弄清楚我忘记尝试的解决方法。
我在这个列表中工作,删除/重新添加解释器对我有用。谢谢!
还有两个提示:1) 如果适用,请确保您使用的是 pip3 而不是 pip,尤其是使用远程 docker 和 docker-compose 解释器。 2) 如果您使用 docker-compose 和/或 docker 玩弄 PYTHONPATH 可能会导致这些类型的问题。更多信息:intellij-support.jetbrains.com/hc/en-us/community/posts/…
我尝试了上面的所有方法,对我来说,创建一个新的虚拟环境只有在完全不同的位置创建它时才有效。我的项目中有一个 venv 文件夹,但它一直显示为“未解析的引用”(即使它执行正确)。我在我的项目文件夹之外创建了一个新的 venv,然后它就起作用了。不知道为什么。
将 venv 文件夹移出项目文件夹也对我有用。
S
Shoham

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

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

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


问题不在于 PyCharm 不能识别项目代码。它不识别标准的 Python 内置方法。
在 MacOS 上解决了我在 PyCharm 2019.3.3 上的问题
显然,这是我的问题。谢谢!
在尝试了所有其他技巧(如重新加载骨架等)之后,在 2021.1 版本中为我工作。
d
dKen

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

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

https://i.stack.imgur.com/iwtxJ.png


我有 pycharm pro,但它并没有为我做这件事,但是在我手动正确标记了文件夹之后,它就可以工作了
是的,这是正确的答案,而不是一些核选项,其中副作用暂时有所帮助,但没有解决 jetbrains 工具的想法(“杀死缓存”,对......以及何时重建?“再次杀死它!”)。标题,这正是我的项目中的问题,其中项目根目录不一定是源根目录,而导入无法理解这一点。这是直接来自马口的信息jetbrains.com/help/pycharm/content-root.html“PyCharm 使用源根作为解决导入的起点”!
简单易行的修复。没有其他解决方案对我有用,但是这个!太感谢了!
只是将 odoo 目录标记为“源根”就可以了
这解决了问题,但它引入了一个新问题:您无法再扫描问题
T
Thomas Farvour

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

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


I
Imran

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

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

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


这是与 Pycharm 2021.3.2 最接近的答案。我从 ~/Library/Caches/ 中删除了 JetBrains 目录,并在 ~/Library/Preferences 中删除了一个或多个 文件,因为没有与 JetBrains 相关的目录。在我的情况下,docker-compose 解释器无法解决导入问题。但是使用从完全相同的 docker-compose 文件启动的服务,一切都与 Docker 解释器一起工作。疯狂的。
s
siripan

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

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

问题解决了!


F
Fairlight Evony

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

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


切换到本地 Python 2 解释器,然后再返回到远程 Python 3 解释器也为我解决了这个问题。
这也适用于 PyCharm 5 专业版。这篇文章中的其他解决方案都不适合我。我进入 Settings -> "Project Interpreters",点击齿轮,然后点击 "More..."。选择默认的 python 解释器(在我的例子中是 /usr/bin/python2.7),点击 "Ok""Apply"。然后返回并选择我想使用的实际 virtualenv。 "Ok""Apply" 再次,它已修复。
同样,FileNotFoundError 是 Python-3-only 的东西。在 File-Settings-Project-Interpreter 和 Run-Edit-Configurations 中设置正确的解释器后,其中一个使错误消失。
f
flix

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

# noinspection PyUnresolvedReferences

G
General Grievance

更简单的操作:

文件 > 设置 > 项目 > 项目解释器

在“项目解释器”列表中选择“无解释器”

应用 > 再次设置你的 python 解释器 > 点击应用

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


使缓存无效并重新启动对我不起作用,但确实如此!
J
Jason McVetta

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


u
user2233949

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

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

-playground
     -env
     -playground

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

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


S
Shehaaz

https://i.stack.imgur.com/Z5bjt.png


k
kkica

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

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

我正在使用 conda 环境。


W
Waqar Detho

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


T
Tim

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

切换到本地解释器 /usr/bin/pythonX.X 并应用查看路径,如上面的答案查找骨架路径。我的是(/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)切换回virt解释器并手动添加骨架路径,如果它没有自动显示。


A
Ali Sherafat

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


W
Wannes Goethals

在我的情况下,由于 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。


H
Hien Quang Le

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

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

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

https://i.stack.imgur.com/myuCX.png

键入 PyCharm 无法解析的包,然后单击安装包。然后单击确定。

https://i.stack.imgur.com/XD071.png

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


I
Ivica Čevis

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

https://i.stack.imgur.com/KuXC9.png

https://i.stack.imgur.com/JePjc.png


O
Ouss

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

我的解决方案是:

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

https://i.stack.imgur.com/386GQ.png


D
Daniil Mashkin

https://i.stack.imgur.com/EN9U2.png


q
qwr

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

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

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


s
seizouki

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


V
Valli

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


A
Adrian

@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

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


N
Nico Rösel

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

帮助->编辑自定义属性


B
Bar Horing Amir

你在使用虚拟环境吗?

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

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

https://i.stack.imgur.com/weN2m.png