繁体   English   中英

在交互式Python中,如何明确导入模块

[英]In interactive Python, how to unambiguously import a module

在交互式python中,我想导入一个模块,例如

C:\\模块\\模块1 \\ module.py

我已经能够做的是创建一个空白

C:\Modules\Module1\__init__.py

然后执行:

>>> import sys
>>> sys.path.append(r'C:\Modules\Module1')
>>> import module

那行得通,但是我必须附加到sys.path,并且如果sys.path中也有另一个名为module.py的文件,那么如何明确地解析为我真正想要导入的文件?

还有另一种不涉及附加到sys.path的导入方法吗?

编辑 :这是我忘记的事情: 这是导入驻留在任意文件夹中的python脚本的正确方法吗? 我将其余答案留在此处以供参考。


有,但是您基本上会编写自己的导入器,该导入器手动创建一个新的模块对象,并使用execfile在该对象的“命名空间”中运行模块的代码。 如果要这样做,请查看mod_python导入器作为示例。

对于一个更简单的解决方案,您可以将要导入的文件的目录添加到sys.path开头 ,而不是结尾,如下所示:

>>> import sys
>>> sys.path.insert(0, r'C:\Modules\Module1')
>>> import module

您不需要创建__init__.py文件,除非您是从程序包中导入的(因此,如果您正在执行import package.module则需要__init__.py )。

插入 sys.path (最开始)效果更好:

>>> import sys
>>> sys.path.insert(0, 'C:/Modules/Module1')
>>> import module
>>> del sys.path[0]  # if you don't want that directory in the path

append到列表会将项目放在最后 ,因此路径中的其他先前条目很可能具有优先权; 因此把目录中的第一个地方是发声方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM