PyCharm shows unresolved references error for valid code
我正在用Pycharm做一个项目。该项目已打开并配置了解释器,可以成功运行。远程解释器路径映射正确。这似乎是正确的配置,但是pycharm用"未解决的引用"错误突出显示了我的有效代码,即使对于内置的python函数也是如此。即使代码在运行,为什么不检测到这些?有没有办法让Pycharm正确识别这些?
这个问题的具体实例是一个远程解释器,但是这个问题也出现在本地解释器上。
文件使缓存无效…重新启动pycharm会有所帮助。
德米特里的回答对我不起作用。
我的工作是通过项目解释器,选择"路径"选项卡,然后点击该子菜单中的刷新按钮。它自动填充了一个叫做"Python骨架"的东西。
编辑:使用pycharm 3.4.1的屏幕截图(它隐藏得很好)
有很多解决方案,有些比其他更方便,而且它们并不总是有效的。
以下是从"快速"到"烦人"的所有尝试:
- 执行
File ->Invalidate Caches / Restart ,重新启动pycharm。- 您也可以在下面的任何方法之后执行此操作,只是为了确保这一点。
- 首先,检查您运行的是哪个解释器:
Run ->Edit Configurations ->Configuration ->Python Interpreter 。 - 刷新解释器的路径:
File ->Settings 。Project: [name] ->Project Interpreter ->project explorer:gear icon->More... - 单击"显示路径"按钮(底部一个)
- 单击"刷新"按钮(底部一个)
- 删除解释器并再次添加:
File ->Settings 。Project: [name] ->Project Interpreter ->project explorer:gear icon->More... - 单击"删除"按钮
- 点击"添加"按钮,重新添加您的仪表。
- 删除项目首选项
- 删除项目的
.idea 文件夹 - 关闭并重新打开Pycharm
- 从头开始打开项目
- 删除项目的
- 删除你的PyCharm用户首选项(但首先备份它们)。
- Mac上的
~/.PyCharm50 - 窗户上的
%homepath%/.PyCharm50
- Mac上的
- 切换到另一个解释器,然后再次切换到所需的解释器。
- 创建一个新的虚拟环境,并切换到该环境的解释器。
- 全部切换到另一个解释器,不要切换回。
当无效缓存或刷新路径不起作用时,我发现自己正在删除并重新添加远程解释器来解决这个问题。
我使用vagrant,如果我在多虚拟机设置中添加一个新的虚拟机,转发的端口会发生变化,当pycharm尝试使用错误的ssh端口时,这似乎会混淆pycharm。更改端口似乎对断开的引用没有帮助。
在我的例子中,它是目录结构。我的项目如下:
1 2 3 4 5 | +---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)进行测试遵循以下步骤:
问题解决了!
很抱歉碰到这个问题,不过我有一个重要的更新要做。
如果您使用的是其他版本,您也可能希望将项目解释器恢复为python 2.7.6,这对我的ubuntu安装pycharm 4.04 professional很有用,但没有其他建议解决了我的问题。
您可以尝试关闭pycharm,从项目中删除
型
在所有建议的解决方案都不适用于我之后,我终于实现了这一目标。我在玩一个django-rest框架项目,使用的是我用它设置的virtualenv。我可以通过将根文件夹标记为源根来修复pycharm,但是Django的服务器会抛出解决异常的方法。所以一个可以工作,另一个不行,反之亦然。
最后,我只需将子文件夹标记为pycharm中的源。所以我的结构是这样的
1 2 3 | -playground -env -playground |
第二个游乐场文件夹是我必须标记为源根的文件夹,以便一切按预期工作。这并没有给我的场景带来任何问题,所以这是一个可行的解决方案。
我只是想分享一下,以防别人能使用它。
型
它也可能是一个Python版本的问题。我得选一个合适的才能让它发挥作用。。
型
极客真是个噩梦,我对不同堆垛的融合回答:
百万千克1切换到本地翻译/usr/bin/pythonx.x并应用百万千克1百万千克1查看上述答案的路径百万千克1百万千克1找到骷髅之路。我的是(/home/tim/desktop/pycharm-community-2016.2.3/helpers/python skeletons)百万千克1百万千克1切换回virt解释器,如果骨架路径没有自动显示,则手动添加骨架路径。百万千克1
型
以上所有的解决方案都不适合我!如果您正在为项目使用虚拟环境,请确保将虚拟环境目录中的
型
在我的例子中,检查错误是由于一个非常具体的python代码案例而出现的。一个包含两个numpy函数和两个list访问的min函数使我的代码检查产生了这种错误。
在下面的示例中,删除"d=0"行会按预期提供未解决的引用错误,但读取不会使代码检查器的错误消失。之后我仍然可以毫无问题地执行代码。
1 2 3 4 | 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]) |
号
清除缓存和重新加载路径列表不起作用。只有使用以下示例修补程序之一更改代码才有效:
- 百万千克1"最小"参数的另一个顺序:示意性的S u v而不是S t u v或T s u v百万千克1百万千克1使用方法而不是函数:s[d].abs()而不是np.abs(s[d])百万千克1百万千克1使用内置的abs()函数百万千克1百万千克1将数字添加到所选参数:u[d]+0。百万千克1
型
我关闭了所有其他项目,在Pycharm单独运行我所需的项目。我从pycharm创建了一个单独的virtualenv,并使用pip在其中添加了所有必需的模块。我在项目的解释器中添加了这个虚拟环境。这解决了我的问题。
型
如果您只想忽略一些"未解决的引用"错误,也可以通过将其放在类/方法/函数前面来显式地告诉它pycharm:
1 | # noinspection PyUnresolvedReferences |
型
如果您使用的是
型
您使用的是virtualenv吗?
如果是这样,您需要通知pycharm所需python.exe位置的每次更改(仅/activate对于pycharm来说是不够的)。
确保Pycharm指向正确的接口和包:文件->设置->项目->项目解释器。单击设备并选择virtualenv脚本文件夹下的python.exe。
氧化镁