为什么PyCharm会对某些Numpy导入提供未解决的引用错误?

时间:2014-05-15 21:41:19

标签: python python-2.7 numpy pycharm

PyCharm中的以下行通过动态检查进行标记,每次导入都有未解决的参考错误。 (它们用红色加下划线。)

from numpy import tan, arcsin, arccos, arctan

但是,以下导入不会导致任何错误/警告:

from numpy import sin, cos, arctan2, sqrt, cross, pi

我使用这些导入的代码运行正常,没有任何错误或警告。我通常依赖PyCharm的红色错误作为警告我的代码被破坏而不会运行,但在这种情况下PyCharm是错误的。

为什么PyCharm的内省和其他人不能识别某些numpy函数?

当前版本:

  • Windows 7 64位
  • Python 2.7.5
  • PyCharm 3.1.2
  • Numpy 1.8

谢谢!

8 个答案:

答案 0 :(得分:20)

你得到这个的原因是因为PyCharm的静态分析。现在,Python所做的是使用静态骨架(一些是预先生成的,一些是生成的)来为您提供分析。看看这里预先生成的骨架 - > https://github.com/JetBrains/python-skeletons

这可以通过启用以下内容来解决:

enter image description here

但是,如果这不起作用:

enter image description here

将阻止错误,它将显示为该行上方的注释。

答案 1 :(得分:9)

Python配置在(至少)两个位置指定:Run | Edit Configurations | Python | Python InterpreterFile | Settings | Project | Project Interpreter。我的错误是我没有在File | Settings ...中设置正确的Python安装。因此,它指的是没有安装导入的Python配置(例如NumPy)。

在我将这两个位置设置为指向相同的,正确的Python安装后,我做了File | Invalidate Caches / Restart,然后就可以了。

要检查的第三个位置是File | Default Settings... | Project Interpreter,并确保它与其他设置匹配。

答案 2 :(得分:7)

以下通常有助于解决假阳性未解决的参考

File | Invalidate Caches

答案 3 :(得分:3)

PyCharm开发人员发布了一种可能的检查失败原因解决方法:

https://youtrack.jetbrains.com/issue/PY-32029

要点-如果项目目录中有venv文件夹,则检查可能会失败。右键单击它,将目录标记为排除。

答案 4 :(得分:1)

在PyCharm的“项目”工具窗口中,右键单击目录,然后选择“将目录标记为->源根”。

答案 5 :(得分:0)

您可以禁用对特定库(例如numpy)的检查。我发现这非常有帮助,因为由于这个问题,我的滚动条一直亮着。转到“设置”->“编辑器”->“检查”->“ Python”->“未解决的引用”(在底部附近),然后转到窗口右下方的“忽略引用”部分。

添加一个带有“ numpy。*”的条目,并且不带引号,并且您不会在numpy中看到这些无法解析的引用,从而使滚动条不再发光!

答案 6 :(得分:0)

我能够简单地使用virtualenv而不是系统解释器来解决此问题。我以前找不到任何其他方法对我有用。

我正在使用Windows 7,PyCharm Community Edition 2018.2.4,Python 3.6.7,Numpy 1.15.4

  1. 创建一个名为my_project的新项目,并将其设置为使用系统解释器File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select the system interpreter
  2. 在项目内部创建以下测试脚本script1.py

    import numpy as np
    print(np.tan(8))
    

    现在,运行此脚本可以正常工作并打印一些数字,但是Pycharm会引发未解决的参考警告,Ctrl->Click上的tan并不会像原来那样转到numpy代码。

    < / li>
  3. 手动创建虚拟环境

    $cd dir/to/my_project
    $virtualenv venv
    $venv\Scripts\activate
    (venv) $pip install numpy
    (venv) $deactivate
    

    在Linux上,将激活行替换为 source venv/bin/activate

  4. 告诉PyCharm使用虚拟环境:File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select Python 3.6 (my_project),它应该在venv文件夹中的项目文件夹中包含python.exe。
  5. 现在File -> Invalide Caches / Restart ... -> Invalidate and restart
  6. 等待所有索引完成,然后检查是否可以在Ctrl->Click中的tanscript1.py

这样,我可以为其他软件包(例如torch和opencv)解决相同的问题(只需使用所需的所有软件包创建虚拟环境)。到目前为止,没有更多未解决的引用。

不知道为什么它会以这种方式工作但不能与系统解释器一起工作。

答案 7 :(得分:0)

对我有用的是 设置>项目> python解释器>(文本栏右侧的齿轮)全部显示> (在python venv上)启用将此虚拟环境与(项目路径)相关联