我试图创建一个包含python脚本所依赖的所有模块的目录。我希望在python导入这些文件时自动查找它们,而不是手动跟踪所有这些文件。为此,我在sys.meta_path
中添加了一个模块查找器:
import sys, imp
class ImportPrint(object):
def find_module(self, name, path=None):
toks = name.split(".")
pre, loc = ".".join(toks[:-1]), toks[-1]
try:
module_info = imp.find_module(loc, path)
except ImportError:
module_info = imp.find_module(loc)
if module_info[0]: module_info[0].close
print "A", name, module_info[1]
return None
sys.meta_path = [ImportPrint()]
import mymod1, mymod2, etc..
这几乎可以工作,但是__init__.py
文件不是这样找到的。有没有更好的方法来查找它们,或者我应该在找到的文件是目录时就直接添加它们?此方法是否会丢失任何其他文件
根据documentation for sys.meta_path,调用
find_module
方法时,将path
参数设置为包的路径(如果是包的路径)。当path
存在时,为什么不使用os.path.join(path, '__init__.py')
相关问题 更多 >
编程相关推荐