Python程序如何轻松编写从具有任意名称的文件导入 Python 模块?
标准库导入机制似乎没有帮助。一个重要的限制是我不需要附带的字节码文件出现;如果我使用imp.load_module
在名为的源文件上foo
,一个名为fooc
出现,显得杂乱且令人困惑。
Python 导入机制期望它最了解文件名:模块文件在特定的文件系统位置找到,特别是文件名具有特定的后缀(foo.py
Python 源代码等),没有其他。
这与另一个约定冲突,至少在 Unix 上:将作为命令执行的文件应该是命名时不参考实现语言 https://secure.wikimedia.org/wikipedia/en/wiki/File_suffix#Command_name_issues。例如,执行“foo”的命令应该位于名为的程序文件中foo
没有后缀。
然而,对这样的程序文件进行单元测试需要导入该文件。我需要程序文件中的对象作为 Python 模块对象,准备好在单元测试用例中进行操作,就像import
会给我。
是什么Pythonic 方式导入模块,特别是来自名称不以以下结尾的文件.py
, 没有出现字节码文件对于那个进口?
import os
import imp
py_source_open_mode = "U"
py_source_description = (".py", py_source_open_mode, imp.PY_SOURCE)
module_filepath = "foo/bar/baz"
module_name = os.path.basename(module_filepath)
with open(module_filepath, py_source_open_mode) as module_file:
foo_module = imp.load_module(
module_name, module_file, module_filepath, py_source_description)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)