IPython导入本地文件

时间:2014-06-27 19:37:56

标签: python ipython python-import

我在IPython和默认的python解释器之间遇到了一个奇怪的差异。我有一个python文件,它隐藏了内置模块的名称:logging.py。假设它有一个简单的方法foo()。

如果我启动默认的python解释器并调用import logging,它会导入本地文件,我可以访问logging.foo()

如果我启动IPython并调用import logging,它会导入python内置模块。如果我将名称更改为非阴影(例如import my_logging),则导入将按预期工作。

预期的行为是什么?对于两个解释器,当前目录位于sys.path的开头,但它们的优先级不同。

1 个答案:

答案 0 :(得分:2)

import sys
print(sys.modules)

IPython从导入的大多数标准库开始,包括日志记录。这些模块似乎是通过完整路径导入的。

推测:IPython已经通过完整路径导入这些库以供内部使用,现在当你import logging再次检查模块已经导入时,无论路径如何,并且什么都不做。