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

时间:2012-07-30 16:23:10

标签: python pycharm

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


问题的这个特定实例是使用远程解释器,但问题也出现在本地解释器上。

28 个答案:

答案 0 :(得分:121)

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

我的工作是前往Project Interpreters,选择“Paths”选项卡,然后点击该子菜单中的刷新按钮。它自动填充了一个名为“python-skeletons”的东西。

编辑:使用PyCharm 3.4.1截屏(隐藏得非常好)

enter image description here

答案 1 :(得分:53)

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

这里有你可以尝试的所有内容,快速来自'令人烦恼的':

  • 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用户首选项(但首先备份它们)。
      Mac上的
    • ~/.PyCharm50
    • Windows上的
    • %homepath%/.PyCharm50
  • 切换到另一个口译员,然后再回到你想要的口译员。
  • 创建一个新的虚拟环境,并切换到那些环境'解释器。
  • 完全切换到另一位口译员,不要换回。

答案 2 :(得分:11)

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

我使用vagrant并且每隔一段时间如果我在我的multi-vm设置中添加一个新的VM,转发的端口就会改变,这似乎会让PyCharm在尝试使用错误的SSH端口时感到困惑。更改端口似乎没有帮助破坏的引用。

答案 3 :(得分:11)

就我而言,它是目录结构。 我的项目看起来像这样:

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

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

答案 4 :(得分:10)

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

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

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

答案 5 :(得分:10)

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

  1. 点击PyCharm菜单。
  2. 选择Project Interpreter。
  3. 选择齿轮图标。
  4. 选择更多按钮。
  5. 选择您所在的Project Interpreter。
  6. 选择目录树按钮。
  7. 选择重新加载路径列表。
  8. 问题解决了!

答案 6 :(得分:5)

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

如果您使用的是其他任何版本,您可能还想将项目解释器还原为Python 2.7.6。在我的Ubuntu安装PyCharm 4.04专业版后,这对我没有任何其他建议解决了我的问题。问题

答案 7 :(得分:3)

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

答案 8 :(得分:2)

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

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

-playground
     -env
     -playground

第二个游乐场文件夹是我必须标记的源文件夹,以便按预期工作。这并没有为我的场景提出任何问题,所以这是一个可行的解决方案。

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

答案 9 :(得分:2)

它也可能是python版本问题。我必须选择合适的一个才能使它工作。 enter image description here

答案 10 :(得分:1)

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

未解决的引用错误已删除 project structure

Unresolved references error

答案 11 :(得分:1)

我的问题是 PyCharm 无法解决 Flask-WTF 。我试图重新安装然后再安装或 Invalidate Cache and Restart PyCharm,但仍然无法正常工作。

然后我想出了这个解决方案,它对我来说很完美。

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

enter image description here

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

enter image description here

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

答案 12 :(得分:1)

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

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

我正在使用conda环境。

答案 13 :(得分:1)

非常容易

您只需要将根目录标记为: 源根(红色), 和您的应用程序: 专有根(蓝色),

然后未解决的引用将消失。

  • enter image description here,如果您使用PyChram pro,它将自动为您完成此操作。

答案 14 :(得分:1)

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

我的解决方案是:

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

enter image description here

答案 15 :(得分:1)

在我的情况下,由于python代码的特殊情况,检查错误显示出来。 包含两个numpy函数和两个列表访问的min函数使我的代码检查产生了这种错误。

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

private GoogleMap mMap; 

MarkerOptions markerOptions = new MarkerOptions();

markerOptions.position(latLng);
markerOptions.title("location");
markerOptions.draggable(true);
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));

    mMap.addMarker(markerOptions);
mMap.addMarker(new MarkerOptions().position(new LatLng(latitude2, longitude2)).title("Pin title2").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));

清除缓存并重新加载路径列表并不起作用。只使用以下示例修补程序之一更改代码才能正常工作:

  • ' min'参数:示意性地为S U T V但不是S T U V或T S U V
  • 使用方法代替函数:S [d] .abs()而不是np.abs(S [d])
  • 使用内置的abs()函数
  • 在选择的参数中添加数字:U [d] + 0。

答案 16 :(得分:1)

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

答案 17 :(得分:1)

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

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

答案 18 :(得分:1)

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

答案 19 :(得分:0)

@kelorek 对我有用,但在此之前,我必须在互操作路径中添加一些路径。 让我们说

from geometry_msgs.msg import Twist

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

help("geometry_msgs")

最后会有路径让我们说:

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

so to Your intepreter pycharm path add

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

希望它对你有帮助,对我也有帮助:)

答案 20 :(得分:0)

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

答案 21 :(得分:0)

在清除之前,我必须转到File-> Invalidate Caches / Restart,重新启动Ubuntu 18.04 LTS,然后打开Pycharm并再次打开File-> Invalidate Caches / Restart。

答案 22 :(得分:0)

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

帮助->编辑自定义属性

答案 23 :(得分:0)

我有一个项目,其中src/中的一个文件导入同一目录中的另一个文件。要使PyCharm能够识别,我必须转到文件>设置>项目>项目结构>选择src文件夹,然后单击“标记为:源”

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

源根目录包含实际的源文件和资源。 PyCharm以源根为起点解决进口问题

答案 24 :(得分:0)

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


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

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

答案 25 :(得分:0)

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

# noinspection PyUnresolvedReferences

答案 26 :(得分:0)

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

答案 27 :(得分:-1)

您使用的是virtualenv吗?

如果是这样,你需要通知PyCharm所需的python.exe位置的每一个变化(仅./activate对于PyCharm来说是不够的)

确保Pycharm指向正确的interpetor和包: 档案 - >设置 - >项目 - >项目口译员。单击齿轮并在virtualenv的Scripts文件夹

下选择python.exe

enter image description here