错误导入numpy

时间:2011-09-14 10:04:09

标签: numpy python-2.6

当我尝试导入numpy时,我有一个奇怪的错误:

Traceback (most recent call last):
  File "/home/timo/malltul/mafet/src/mafet/core/pattern.py", line 7, in <module>
    import numpy as np
  File "/usr/lib/python2.6/dist-packages/numpy/__init__.py", line 147, in <module>
    import ma
  File "/usr/lib/python2.6/dist-packages/numpy/ma/__init__.py", line 44, in <module>
    import core
  File "/usr/lib/python2.6/dist-packages/numpy/ma/core.py", line 4850, in <module>
    all = _frommethod('all')
  File "/usr/lib/python2.6/dist-packages/numpy/ma/core.py", line 4824, in __init__
    self.__doc__ = self.getdoc()
  File "/usr/lib/python2.6/dist-packages/numpy/ma/core.py", line 4830, in getdoc
    signature = self.__name__ + get_object_signature(meth)
  File "/usr/lib/python2.6/dist-packages/numpy/ma/core.py", line 109, in get_object_signature
    import inspect
  File "/usr/lib/python2.6/inspect.py", line 39, in <module>
    import tokenize
  File "/usr/lib/python2.6/tokenize.py", line 38, in <module>
    COMMENT = N_TOKENS
NameError: name 'N_TOKENS' is not defined

问题的原因似乎是我的脚本在我自己的名为core的包中,每当我尝试导入numpy时,我都会收到错误。导入在其他地方工作正常。

我迄今为止唯一的解决方案是将我的“核心”软件包重命名为其他软件包。为什么这很重要?我做错了吗?

我在Ubuntu 10.14上使用Python2.6。 Numpy版本是1.3.0。

编辑:实际上重命名我的包不能修复它。在我的包中重命名token.py会修复它。抱歉错误。

1 个答案:

答案 0 :(得分:4)

我怀疑这与您的core模块或numpy有什么关系。

从堆栈跟踪中,问题出现在tokenize模块上,该模块是Python的一部分,而不是numpy的一部分。 Tokenize执行from token import *,然后使用N_TOKENS中定义的token.py

首先,我会检查token上没有名为PYTHONPATH的迷路模块:

>>> import token
>>> token.__file__
'/usr/lib/python2.6/token.pyc'

如果这个拿到上面的文件但你仍然遇到问题,我建议重新安装Python。