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

在交互式Python中,如何明确地导入模块,python,import,path,Python,Import,Path,在交互式python中,我想导入一个模块,例如 C:\Modules\Module1\module.py 我能做的就是创建一个空的 C:\Modules\Module1\__init__.py 然后做: >>> import sys >>> sys.path.append(r'C:\Modules\Module1') >>> import module 这是可行的,但我必须附加到sys.path,如果sys.path中还有另一个名为mod

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

C:\Modules\Module1\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?

编辑:我忘记了一件事:我将剩下的答案留在这里以供参考

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

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

>>> import sys
>>> sys.path.insert(0, r'C:\Modules\Module1')
>>> import module
您不需要创建uuu init uuuuuuuuuuupy.py文件,除非您是从一个包中导入,因此,如果您是在导入package.module,那么您需要uuuuu init uuuuuuuuuuuuuuuuupy.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

“附加到列表”将该项放在最后一位,因此路径中以前的其他项很可能优先;因此,将目录放在第一位是一种更合理的方法。

请参阅感谢您的回复。我确实喜欢以下方法:>>>>导入imp>>>m=imp.find_module'module',r'c:\modules\module1'>>>imp.load_module'module',m[0],m[1],m[2]可能重复的