Python 按GAE中的文件/模块名称导入
我正在尝试制作一个简单的本地化模块,该模块采用一个键名并返回基于给定语言的本地化字符串。该语言是常量之一,并映射到包含字符串表的python文件。我希望在运行时动态地执行此操作。下面是我的方法,但GAE不支持imp模块。有没有其他方法可以做到这一点 import logging import imp import localizable LANGUAGE_EN = "en" LANGUAGE_JP = "ja" class Localizer(object): """ Returns a localized string corresponding to unique keys """ @classmethod def localize(cls, language = LANGUAGE_EN, key = None): user_language = imp.load_source("localizable.%s" % language, "/") if (user_language): return user_language.Locale.localize(key) else: logging.error("Localizable file was not found") return "" 导入日志记录 进口小商品 可本地化导入 语言 语言\u JP=“ja” 类定位器(对象): """ 返回与唯一键对应的本地化字符串 """ @类方法 def本地化(cls,语言=语言,键=无): user\u language=imp.load\u源(“可本地化的。%s”%language,“/”) 如果(用户语言): 返回用户语言.区域设置.本地化(键) 其他: logging.error(“未找到可本地化文件”) 返回“”Python 按GAE中的文件/模块名称导入,python,google-app-engine,Python,Google App Engine,我正在尝试制作一个简单的本地化模块,该模块采用一个键名并返回基于给定语言的本地化字符串。该语言是常量之一,并映射到包含字符串表的python文件。我希望在运行时动态地执行此操作。下面是我的方法,但GAE不支持imp模块。有没有其他方法可以做到这一点 import logging import imp import localizable LANGUAGE_EN = "en" LANGUAGE_JP = "ja" class Localizer(object): """ Re
我将语言文件放在localizable/en.py中,等等。我认为在GAE中应该可以使用的imp模块的替代品是
\uuuuu import\uuu()
。事实上,“import”语句调用它来执行实际的导入
user_language = getattr(__import__('localizable.%s' % language), language)
或
(将非空的第四个参数传递给
\uuuuu import\uuuuu
会导致它返回第一个参数中最右边的模块,而不是最左边的模块。这有点老套,因此人们倾向于选择第一个解决方案而不是第二个。)第一个解决方案非常有效,谢谢。我会尽快投票。。(显然需要15次重复)
user_language __import__('localizable.%s' % language, {}, globals(), [''])