我知道这个问题是关于__import__()
函数的,但我认为如果您按照文档importlib
中的建议使用 Python 2.7 或更高版本,则该包最适合运行时包导入:
注意:模块的程序化导入应该使用 import_module() 而不是这个函数。
可能的问题:这是在 python 2.7 中引入的:
2.7 版中的新功能。
此模块是 Python 3.1 中功能更全面的同名包中可用功能的一个小子集,它提供了完整的导入实现。此处提供的内容有助于轻松从 2.7 过渡到 3.1。
在您的情况下,您可以使用:
import importlib
messages = importlib.import_module('messages_en')
另外,如果你想指定包名,那么from messages import messages_en
可以写成:
importlib.import_module('.messages_en', 'messages')
请注意用于相对路径分辨率的.
in ,如下所述:.messages_en
... name 参数以绝对或相对术语(例如 pkg.mod 或 ..mod)指定要导入的模块。如果名称以相对术语指定,则 package 参数必须设置为作为解析包名称的锚点的包名称(例如 import_module('..mod', 'pkg.subpkg')将导入 pkg.mod)。