从文件夹中导入Python的动态模块

3

我看过其他关于Python动态导入模块的帖子,它们都能够正常工作!但是当我从特定文件夹导入模块时,问题就来了。

如果主要的Python代码和模块在同一个文件夹中:

main.py

module.py

我执行以下代码:

var = "module"
module = __import__(var)

它的表现非常好。但我的模块在一个名为“modules”的特定文件夹中。

main.py

modules\module.py

如果我这样做:

var = "a"
module = __import__("modules\\"+var)

它不起作用。 我知道我离解决方案很接近,但是我无法得到它。

谢谢你的帮助。

1个回答

3
假设modules确实是一个Python包,并且var是你的模块名称,你需要用点号来分隔目录。
var = "module" 
module = __import__("modules.{0}".format(var), globals(), locals(), [], -1)

您可以查看文档:

导入(import)文档

您需要在您的模块文件夹中创建一个__init__.py文件。


我遇到了这个错误:SyntaxError: 文件 C:\modules\init.py 的第2行存在非ASCII字符'\xe1',但未声明编码;请参考http://www.python.org/peps/pep-0263.html获取详细信息。 - user1618465
我稍微编辑了一个问题,以便与__import__准确匹配。至于你的错误,我真的不知道你的__init__.py里面有什么。尝试删除所有内容并将其保留为空。 - iblazevic
我不得不在模块文件夹中创建__init__.py文件,它可以正常工作!只需创建一个空的__init__.py文件即可。谢谢 - user1618465

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接