__main__是否保证始终可导入?

时间:2017-07-02 23:01:38

标签: python python-3.x module python-import

有没有做的事情:

import __main__

可能导致ImportError?我尝试的所有案例似乎都表明这一切都有效。 __main__上的文档似乎没有说明任何事情。

给出一些上下文:我试图使用__main__.__dict__钩子在usersitecustomize中注入一些名称,以便(主要)在REPL启动时使它们可用。

虽然没有__import__的重新定义(如评论所述),但这基本上归结为我是否需要将其包裹在try-except中。

1 个答案:

答案 0 :(得分:2)

可能是。 Python在此文件中初始化__main__https://github.com/python/cpython/blob/master/Python/pylifecycle.c#L1327

但请注意,runpyIPython等模块会将__main__模块替换为自己动态创建的模块,以防止与自己的启动脚本发生冲突,并提供预期的行为。 runpy。

runpy本身是Python标准库的一部分,它提供了-m标志的实现,允许任意模块作为脚本执行。

另一种选择是IPython,它提供了在启动新REPL时执行代码的功能。

有关详情,请参阅此处:http://ipython.readthedocs.io/en/stable/config/intro.html?highlight=exec_lines