显然,导入RichIPythonWidget会对模块pkgutil产生影响。
IPython版本:2.1.0 python版本:2.7& 2.7.6
import os
import pkgutil
print 'Before 1 ... '
pkgutil.find_loader('os') # call 1
print 'After call 1 ... '
from IPython.qt.console.rich_ipython_widget import RichIPythonWidget
print 'Before call 2 ... '
pkgutil.find_loader('os') # call 2
print 'After call 2 ... '
Before call 1 ...
After call 1 ...
Before call 2 ...
Traceback (most recent call last):
File "issue.py", line 11, in <module>
pkgutil.find_loader('os') # call 2
File "/u/bl/Dev/work/inkqt/opt.SuSE-11.4/lib64/python2.7/pkgutil.py", line 467, in find_loader
loader = importer.find_module(fullname)
TypeError: find_module() takes exactly 3 arguments (2 given)
据我了解,我的问题似乎与添加到 sys.meta_path 的对象有关 通过 IPython ,但 pkgutil 模块使用错误的界面。 但是我很难决定谁有罪......
非常感谢任何解决方法。
THX
-benoit
答案 0 :(得分:1)
这很可能是由于IPython在IPython / external / qt_loaders.py中安装了Qt ImportDenier。 find_module方法不尊重finder.find_module(fullname, path=None)
的PEP302签名,其中路径是可选的。
我在IPython上提交了一个问题:https://github.com/ipython/ipython/issues/5932。