【问题标题】:PyCharm shows unresolved references error for valid codePyCharm 显示有效代码的未解决引用错误
【发布时间】:2012-07-28 08:35:55
【问题描述】:

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


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

【问题讨论】:

标签: python pycharm


【解决方案1】:

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

【讨论】:

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

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

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

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

【讨论】:

  • “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 中,在“解释器路径”窗口中,我没有“重新加载路径列表”按钮(底部蓝色刷新图标)。此外,我在列表中看不到任何路径,并且加号和减号按钮被禁用。
【解决方案3】:

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

这里有你可以尝试的,从“快速”到“烦人”:

  • 执行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,请注意:

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

【讨论】:

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

在我的例子中,它是目录结构。 我的项目如下所示:

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

所以右击 dir_b > "mark directory as" > "project root"

【讨论】:

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

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

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

【讨论】:

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

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

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

【讨论】:

    【解决方案7】:

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

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

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

    【讨论】:

      【解决方案8】:

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

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

      问题解决了!

      【讨论】:

        【解决方案9】:

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

        如果您使用的版本不是 Python 2.7.6,您可能还希望将项目解释器恢复为 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 中设置正确的解释器后,其中一个使错误消失。
        【解决方案10】:

        操作更简单为我工作:

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

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

        【讨论】:

        • 使缓存无效并重新启动对我不起作用,但确实如此!
        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

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

          # noinspection PyUnresolvedReferences
          

          【讨论】:

            【解决方案13】:

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

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

            -playground
                 -env
                 -playground
            

            第二个 Playground 文件夹是我必须标记为源根目录的文件夹,这样一切才能按预期工作。这对我的场景没有任何问题,因此它是一个可行的解决方案。

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

            【讨论】:

              【解决方案14】:

              也可能是 python 版本问题。我必须选择正确的让它发挥作用。

              【讨论】:

                【解决方案15】:

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

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

                我正在使用 conda 环境。

                【讨论】:

                  【解决方案16】:

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

                  【讨论】:

                    【解决方案17】:

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

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

                    【讨论】:

                      【解决方案18】:

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

                      【讨论】:

                        【解决方案19】:

                        在我的情况下,由于 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”参数的另一种排序:示意性地为 S U T V,但不是 S T U V 或 T S U V
                        • 使用方法代替函数:S[d].abs() 代替 np.abs(S[d])
                        • 使用内置 abs() 函数
                        • 向选择的参数添加数字:U[d] + 0。

                        【讨论】:

                          【解决方案20】:

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

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

                          1. Ctrl+Alt+S (Windows) 打开 Project Interpreter,然后单击 Install (+) 新软件包。

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

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

                          【讨论】:

                            【解决方案21】:

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

                            未解决的引用错误已被删除

                            【讨论】:

                              【解决方案22】:

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

                              我的解决方案是:

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

                              【讨论】:

                                【解决方案23】:

                                如果您使用vagrant,则错误可能是由错误的python解释器引起的。 在我们的vagrant 中,我们使用的是pyenv,所以我不得不将Python Interpreter path 路径从/usr/bin/python 更改为/home/vagrant/.pyenv/versions/vagrant/bin/python

                                【讨论】:

                                  【解决方案24】:

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

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

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

                                  【讨论】:

                                    【解决方案25】:

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

                                    【讨论】:

                                      【解决方案26】:

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

                                      【讨论】:

                                        【解决方案27】:

                                        @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
                                        

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

                                        【讨论】:

                                          【解决方案28】:

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

                                          帮助->编辑自定义属性

                                          【讨论】:

                                            【解决方案29】:

                                            你在使用 virtualenv 吗?

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

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

                                            【讨论】:

                                              猜你喜欢
                                              • 1970-01-01
                                              • 2018-12-16
                                              • 1970-01-01
                                              • 2015-09-05
                                              • 2016-10-12
                                              • 1970-01-01
                                              • 2020-01-20
                                              • 1970-01-01
                                              相关资源
                                              最近更新 更多