【发布时间】:2015-05-18 17:52:41
【问题描述】:
我有这个设置:
文件: a.ext1 一个.py
a.ext1 出于某种原因加载 a.py,但作为引擎我需要加载文件 a.ext1。
我可以让它在 py3 中正常工作,但我不能让它在 py2 中正常工作。
这是我的python2尝试:**这是主要流程,当然还有更多的代码。
file = os.path.abspath(os.path.expanduser('a.ext1')
directory = os.path.dirname(file)
sys.path.append(directory)
fullname = 'my.name.space.a'
sys.modules['my.name.space'] = imp.new_module('my.name.space')
x = imp.load_source(fullname,file)
现在,如果我这样做了; x,它会告诉我:
module 'my.name.space' from '<path>/a.ext1'
但是如果我执行 dir(x) ,它会给我来自 a.py 的东西。我希望它给我来自 a.ext1 文件的东西。
我怎样才能让它在 py2 上工作?
这是它在 py3 上的工作原理:
file = os.path.abspath(os.path.expanduser('a.ext1'))
directory = os.path.dirname(file)
sys.path.append(directory)
fullname = 'my.name.space.a'
loader = importlib.machinery.SourceFileLoader(fullname = fullname,
path = file)
x = loader.load_module()
现在 x 正是我想要的,a.ext1 文件,而不是 .py
知道我怎样才能让它为 py2 工作吗?
(顺便说一句,我已经阅读了关于堆栈溢出的所有关于这个主题的内容,但从来没有一个 .py 也存在过)
【问题讨论】:
标签: python python-2.7 python-3.x python-import