- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有这个设置:
文件:一个.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 中的内容。我想让它给我一个 .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 上工作吗?
(顺便说一句,我已经在 Stack overflow 上阅读了所有我能找到的关于这个主题的内容,但从来没有出现过 .py 也存在的情况)
最佳答案
不知道创建空模块和附加路径是什么笨拙的东西,但在 2.7 上对我来说同样适用。一个简单的独立示例肯定不会有问题。
我会说你的 a.py
也被加载到 my.name.space.a
中,在程序的其他地方,在这种情况下它的内容 < em>clash 与您在同一模块名称下加载的任何其他内容。一次只能有一个给定名称的全局模块实例,例如:
a.py:
py_stuff = 1
a.ext1
ext1_stuff = 1
测试ok.py:
import imp
x = imp.load_source('a', 'a.ext1')
print(x) # <module 'a' from 'a.ext1'>
print(dir(x)) # ['__builtins__', ..., 'ext1_stuff']
测试不正常.py:
import imp
import a
x = imp.load_source('a', 'a.ext1')
print(x) # <module 'a' from 'a.ext1'>
print(dir(x)) # ['__builtins__', ..., 'ext1_stuff', 'py_stuff']
关于python - imp.load_source 另一个文件而不是 .py ,但 .py 也存在于该目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29079834/
我使用的是python2.5。我需要动态导入一个模块,然后在更改时重新加载。我如何实现这一目标。 我在下面的示例中尝试过 - 不起作用: import imp modfile = 'mymod_inf
我的应用程序具有以下布局: /wsgi/myapp/__init__.py /wsgi/application /app.py 文件_init_.py: from flask import Flask
对于某些Python项目,我在config模块中定义了默认配置。可以通过使用 rc 文件来进行定制 config = imp.load_source('config', 'some_rc_file')
我正在阅读 this所以关于从绝对路径导入模块的问题。一个答案建议使用以下代码: import imp foo = imp.load_source('module.name', '/path/to/f
什么时候使用imp.load_source() method用于导入 Python 模块?在某些情况下,与使用 import 关键字的正常导入相反,它是否有一些优势? 最佳答案 import 总是在下
我想知道以下行为是预期的还是错误。我正在使用 CPython2.7 创建文件x.py def funcA(): print "funcA of x.py" def funcB(): p
我有一个目录,其中包含任意数量的模块,每个模块仅包含一个函数do_stuff。例如: foos/ __init__.py foo_1.py foo_2.py ...
我有这个设置: 文件:一个.ext1一个.py a.ext1 出于某种原因加载 a.py,但作为引擎我需要加载文件 a.ext1。 我可以让它在 py3 中正常工作,但我无法让它在 py2 中工作。
我正在使用 imp从源加载 python 文件的模块(存在于:/parent_folder/path/to/my_module/my_module.py): mod = imp.load_source
我目前使用的是 Python 2.7,我正在尝试加载这样的文件: myPlt = imp.load_source('SourceFile', 'path/to/SourceFile.py') 但是,S
我想为我的 python 代码使用一个带有配置变量的 txt 文件。我看到以下代码并将其从 Web 复制到我的 python。 def getVarFromFile(filename): impo
我是一名优秀的程序员,十分优秀!