首页 文章

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

提问于
浏览
224

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


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

17 回答

  • 11

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

  • 1

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

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

  • 45

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

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

    edit :使用PyCharm 3.4.1的截图(隐藏得很好)

    enter image description here

  • 2

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

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

    -playground
         -env
         -playground
    

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

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

  • 5

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

    • 单击PyCharm菜单 .

    • 选择Project Interpreter .

    • 选择齿轮图标 .

    • 选择更多按钮 .

    • 选择您所在的项目翻译 .

    • 选择目录树按钮 .

    • 选择重新加载路径列表 .

    问题解决了!

  • 3

    当Invalidating Caches或Refreshing Paths不起作用时,我发现自己删除并重新添加远程解释器以解决此问题 .

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

  • 0

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

    在Mac上你想删除〜/ Library / Caches / Pycharm40和〜/ Library / Preferences / PyCharm40 .

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

  • 2

    在我的情况下,检查错误显示由于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 .

  • 116

    档案|使高速缓存失效...并重新启动PyCharm会有所帮助 .

  • 345

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

  • 1

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

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

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

  • 10

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

  • -1

    你在使用virtualenv吗?

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

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

    enter image description here

  • 11

    Geeze是一场噩梦,我将不同的StackOVerflow答案融合在一起:

    • 切换到本地解释器/usr/bin/pythonX.X并申请

    • 查看上述答案的路径

    • 查找骨架路径 . 我是(/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)

    • 切换回virt解释器并手动添加骨架路径(如果它没有自动显示) .

  • 1

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

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

    • 执行 File - > Invalidate Caches / Restart 并重新启动PyCharm .

    • 您也可以在以下任何一种方法之后执行此操作,只是为了确定 .

    • 首先,检查您正在运行的解释器: Run - > Edit Configurations - > Configuration - > Python Interpreter .

    • 刷新解释器的路径:

    • File - > Settings

    • Project: [name] - > Project Interpreter - > 'Project Interpreter':齿轮图标 - > More...

    • 单击'Show paths'按钮(底部一个)

    • 单击'Refresh'按钮(底部一个)

    • 删除解释器并再次添加:

    • File - > Settings

    • Project: [name] - > Project Interpreter - > 'Project Interpreter':齿轮图标 - > More...

    • 单击'Remove'按钮

    • 单击'Add'按钮并重新添加您的interpeter

    • 删除项目首选项

    • 删除项目的 .idea 文件夹

    • 关闭并重新打开PyCharm

    • 从头开始打开您的项目

    • 删除PyCharm用户首选项(但首先备份它们) .
      在Mac上

    • ~/.PyCharm50
      在Windows上

    • %homepath%/.PyCharm50

    • 切换到另一个解释器,然后再返回到您想要的解释器 .

    • 切换到另一个解释器,不要切换回来 .

  • 10

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

  • 1

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

相关问题