Python 使用“导入numpy和scipy时出现神秘错误”;膝盖.py“;

Python 使用“导入numpy和scipy时出现神秘错误”;膝盖.py“;,python,import,module,numpy,scipy,Python,Import,Module,Numpy,Scipy,Python源代码中包含一个名为knee.py的文件。它用自己的钩子覆盖常规导入语句。代码应该是正确的,对于内置模块和单文件模块,它是正确的。然而,当我尝试用它导入numpy时,我会遇到一个奇怪的错误(两者都不同) (...long stack trace) File "knee.py", line 101, in import_module m = imp.load_module(fqname, fp, pathname, stuff) TypeError: import_hook

Python源代码中包含一个名为
knee.py
的文件。它用自己的钩子覆盖常规导入语句。代码应该是正确的,对于内置模块和单文件模块,它是正确的。然而,当我尝试用它导入numpy时,我会遇到一个奇怪的错误(两者都不同)

(...long stack trace)
  File "knee.py", line 101, in import_module
    m = imp.load_module(fqname, fp, pathname, stuff)
TypeError: import_hook() takes at most 4 arguments (5 given)
我不明白为什么会这样?是否也会有一个
self
被传递?
knee.py
中的所有代码都不是为对象编写的,我很确定
imp.load\u模块
不需要
self
参数。有人知道是什么导致了问题吗?我甚至保存了一份关于导入内容的记录,似乎代码并没有立即遇到问题,只是在numpy中导入了一些其他内容之后

对于scipy,我得到一个错误,可能与numpy事件有关:

(...long stack trace)
  File "/usr/apps/python2.6/lib/python2.6/site-packages/numpy/core/__init__.py", line 10, in <module>
    import _sort
  File "knee.py", line 16, in import_hook
    q, tail = find_head_package(parent, name)
  File "knee.py", line 52, in find_head_package
    q = import_module(head, qname, parent)
  File "knee.py", line 101, in import_module
    m = imp.load_module(fqname, fp, pathname, stuff)
ImportError: numpy.core.multiarray failed to import
(…长堆栈跟踪)
文件“/usr/apps/python2.6/lib/python2.6/site packages/numpy/core/_init__.py”,第10行,在
导入排序
文件“knee.py”,第16行,在导入钩中
q、 tail=查找头包(父项,名称)
文件“knee.py”,第52行,在find_head_包中
q=导入模块(头、qname、父)
导入模块中第101行的文件“knee.py”
m=imp.load_模块(fqname、fp、路径名、stuff)
ImportError:numpy.core.multiarray导入失败
有人知道会发生什么吗?

已解决。(仅保证打包模块numpy和scipy的解决方案)

我实现了自己的解决方案。请注意,虽然我在这里发布的代码有效,但它包含一堆愚蠢的调试语句和注释掉的代码,这些代码可以被删除,并且还做了一些与我想使用它相关的其他事情


我的解决方案:

您是否用另一个python C扩展尝试过它?(比如说,
cStringIO
或者standad库中的其他东西?)我也没有什么线索,但这将有助于把它缩小到是一个具体的问题还是一个一般的C扩展问题……
cStringIO
工作得很好。Tsk-Tsk-break-link