Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按GAE中的文件/模块名称导入_Python_Google App Engine - Fatal编程技术网

Python 按GAE中的文件/模块名称导入

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

我正在尝试制作一个简单的本地化模块,该模块采用一个键名并返回基于给定语言的本地化字符串。该语言是常量之一,并映射到包含字符串表的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(“未找到可本地化文件”) 返回“”
我将语言文件放在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(), [''])