Python源文件中包含一個名爲knee.py
的文件。它用自己的鉤子覆蓋常規導入語句。代碼應該是正確的,對於內置模塊和單個文件模塊來說,它是正確的。然而,當我嘗試導入numpy時,我得到了一個奇怪的錯誤(兩種不同)。用「knee.py」導入numpy和scipy的神祕錯誤
(...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_module
不希望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
有沒有人有什麼可以怎麼回事的想法?
您是否試過用另一個python C擴展? (比如'cStringIO'或standal庫中的其他東西?)我也沒有確切的線索,但它有助於縮小它是否是一個特定於numpy的問題或一般的C擴展問題。 –
cStringIO工作正常。 – Tim