【问题标题】:python Spyder not importing numpypython Spyder不导入numpy
【发布时间】:2014-06-22 19:06:24
【问题描述】:

我正在使用带有 Windows 7、python 2.7 的 python Spyder 2.2.5 编写脚本

一开始我已经尝试了所有的导入方式:

from numpy import *

import numpy

还有

import numpy as np

而且,对于我使用 numpy 的每一行,编译时都会出错

QR10 = numpy.array(QR10,dtype=float)
QR20 = numpy.array(QR20,dtype=float)
QR11 = numpy.array(QR11,dtype=float)
QR21 = numpy.array(QR21,dtype=float)

但是,即使有这 30 个错误,如果我运行它,脚本仍然可以工作....

对此有什么帮助吗?

【问题讨论】:

  • 您可能已经知道,该脚本只适用于第二个选项。 “如果我运行脚本就可以工作”是什么意思?您的意思是在 Spyder 内部,还是从外部运行它?也许 Spyder 正在使用另一个版本的解释器,例如蟒蛇3?另外,您是否通过标准方式安装了 numpy?如果没有,也许你必须在“工具”菜单中调整 PYTHONPATH。
  • 让我们看看....该脚本也可以与选项 3 一起使用 np.array...etc,(我已经测试过但不工作)现在,Spyder 附带包 Python(x,y)所以所有东西(python 2.7、numpy、matplotlib 等)都安装好了。当我提到脚本可以工作时,我想通过单击“运行”来表示在 Spyder 中,因此,即使在编译时出现 30 多个错误,它从头到尾都可以正常工作而不会引发任何错误,即使走过标记的行如上图中的“错误”。这很奇怪......

标签: python numpy spyder


【解决方案1】:

Python 实际上无法编译。 Spyder 只使用Pylint 执行静态代码分析。根据所使用的 Pylint 版本,它可能是一个错误或无法检测到的情况。

例如,import 语句(或到达它的路径)可能位于条件块中,直到运行时才能解析。鉴于您使用的是 Spyder,也可能是您将 import 语句直接放在控制台或单独的文件中,然后使用脚本中导入的模块。

您可以尝试使用如下脚本查看是否收到相同的错误:

import numpy

QR10 = [1, 2, 3]
QR20 = [1, 2, 3]
QR11 = [1, 2, 3]
QR21 = [1, 2, 3]

QR10 = numpy.array(QR10,dtype=float)
QR20 = numpy.array(QR20,dtype=float)
QR11 = numpy.array(QR11,dtype=float)
QR21 = numpy.array(QR21,dtype=float)

您不应该在此处看到E0602。然而,有趣的是,您可能会收到[E1101] Module 'numpy' has no 'array' member,因为事实证明 numpy 对成员进行了一些动态定义,因此 Pylint 无法知道它(如您所见 here实际上已经解决了。

这个故事的寓意是 Pylint 错误不应该让你夜不能寐。很高兴看到报告,但如果您确定您的代码有意义并且运行得恰到好处,您可以忽略它们 - 尽管尝试了解 为什么 它会给出错误总是一个好的锻炼。

【讨论】:

  • 感谢您的回答 javidcf,我将使用您建议的简单脚本进行测试。但是,由于我正在编码和编码,每次我使用 numpy 时都会收到一个新错误......所以我现在每次尝试“编译”时都会看到超过 70 个错误......但没关系
  • @user2919052 如果您真的厌倦了它,最简单的解决方案是将# pylint: disable=E0602# pylint: disable=E1101 在分析中禁用这些错误;但是,请注意,这将禁用脚本中所有此类错误。
  • jdehesa 引用的问题已解决并关闭。将 astroid 更新到最新版本(截至目前为 1.2.1),pylint 将不再检测到此误报。只是为了澄清一下,尽管 pylint 问题(以及这里)中有所有 cmets,但这与成员的动态定义无关。该问题与使用从 __future__ 导入的 absolute_import 相关。
【解决方案2】:
import numpy as np

然后使用

QR10 = np.array(QR10,dtype=float)  # instead of numpy.array

【讨论】:

  • import numpy as np 之后QR10 = np.array(QR10,dtype=float) 也尝试并得到错误....是 Spyder 的问题吗??
  • 嗯……你试过重启内核,然后重新开始吗?
  • 嘿嘿嘿...这很令人沮丧,是吗?你的代码中一定有一个 numpy,你的任务是找到它:)
  • mm 这很有趣......你的“numpy 隐藏在你的代码中”是什么意思?你的意思是“numpy”这个词还是......我到底应该寻找什么??
  • 是的,这就是我的意思。如果你import numpy as np,numpy 通常应该只出现在导入行中;所有其他实例都应为 np;也许验证你没有隐藏在某处的偷偷摸摸的 numpy 并将其转换为 np 是一个好主意...... :) 在你所做的所有尝试中,你可能需要做一些清理工作。
猜你喜欢
  • 2020-02-08
  • 2019-12-29
  • 2016-10-23
  • 2013-09-08
  • 2018-12-23
  • 2021-11-08
  • 2019-04-21
  • 2019-12-28
  • 1970-01-01
相关资源
最近更新 更多