PyCharm中的以下行通过动态检查进行标记,每次导入都有未解决的参考错误。 (它们用红色加下划线。)
from numpy import tan, arcsin, arccos, arctan
但是,以下导入不会导致任何错误/警告:
from numpy import sin, cos, arctan2, sqrt, cross, pi
我使用这些导入的代码运行正常,没有任何错误或警告。我通常依赖PyCharm的红色错误作为警告我的代码被破坏而不会运行,但在这种情况下PyCharm是错误的。
为什么PyCharm的内省和其他人不能识别某些numpy函数?
当前版本:
谢谢!
答案 0 :(得分:20)
你得到这个的原因是因为PyCharm的静态分析。现在,Python所做的是使用静态骨架(一些是预先生成的,一些是生成的)来为您提供分析。看看这里预先生成的骨架 - > https://github.com/JetBrains/python-skeletons
这可以通过启用以下内容来解决:
但是,如果这不起作用:
将阻止错误,它将显示为该行上方的注释。
答案 1 :(得分:9)
Python配置在(至少)两个位置指定:Run | Edit Configurations | Python | Python Interpreter
和File | 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
File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select the system interpreter
在项目内部创建以下测试脚本script1.py
:
import numpy as np
print(np.tan(8))
现在,运行此脚本可以正常工作并打印一些数字,但是Pycharm会引发未解决的参考警告,Ctrl->Click
上的tan
并不会像原来那样转到numpy代码。
手动创建虚拟环境
$cd dir/to/my_project
$virtualenv venv
$venv\Scripts\activate
(venv) $pip install numpy
(venv) $deactivate
在Linux上,将激活行替换为
source venv/bin/activate
File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select Python 3.6 (my_project)
,它应该在venv
文件夹中的项目文件夹中包含python.exe。File -> Invalide Caches / Restart ... -> Invalidate and restart
Ctrl->Click
中的tan
上script1.py
这样,我可以为其他软件包(例如torch和opencv)解决相同的问题(只需使用所需的所有软件包创建虚拟环境)。到目前为止,没有更多未解决的引用。
不知道为什么它会以这种方式工作但不能与系统解释器一起工作。
答案 7 :(得分:0)
对我有用的是 设置>项目> python解释器>(文本栏右侧的齿轮)全部显示> (在python venv上)启用将此虚拟环境与(项目路径)相关联