另一种相对进口
import_relative的Python项目详细描述
简介
与python的import相对相比,更类似于需要ruby的相对。
当您有一个包含嵌套子模块的大型包时,这允许嵌套子模块相互引用,而不必拉入、了解或显式导入整个顶级树。
概要
from import_relative import import_relative, get_srcdir # Below "trepan" is my top-level namespace # 'io' is the directory this file is in. Mbase = import_relative('base', '.', 'trepan) # Adds trepan.io.base # The following adds trepan.lib.bytecode Mbytecode = import_relative('bytecode', '..lib', 'trepan) class MyClass(Mio.InputBase): # Use name from Mio ... # like os.path.realpath(os.path.dirname(__file__)) srcdir = get_srcdir()
未执行导入路径搜索。如果没有进口,我们就失败了。
基本原理
在我的开发中,每个模块(在python中是一个文件)都可以独立运行。当作为主程序调用时,它运行演示代码。每个模块负责导入它需要的其他模块。
我无法让相对导入工作,也无法在python 2或python 3中使用importlib。他们似乎错了,因为他们找不到上层或类似的东西。
错误
抱歉,我们不做“从列表”。
各种包装系统,如PIP和装载机,可能无法与此配合使用。 这个密码很脆弱。
我一直想相信,已经有一种方法可以从源代码树中开发出来(不是distutils惯用的那种复制),不需要修改搜索路径,在模块中有演示代码,这样它们就可以像主程序一样运行,并作为一个模块嵌入到整个系统中。
在那之前,我有这个。