跳转到主要内容

Python 的嵌套导入

项目描述

嵌套导入 (Nimp)

允许嵌套导入,类似于Java。Nimp 安装了一个无害的元导入钩子,以支持 嵌套包,即位于公共命名空间下的多个包。这在Java中很常见,例如 com.foo.bar.spamcom.foo.bar.eggs,以及在Haskell和几种其他语言中。Nimp基本上允许包“注入”到共享命名空间中。

与Python 2.3-2.7和3.0及以上版本兼容。

您可以在我的 博客 上了解更多关于 nimp__lazy__ 的信息。

使用方法

import nimp
nimp.install()

您可以将这两行添加到您的 site.py 脚本中,这样您就可以立即获得Nimp。

优点

  • 允许独立分发“插件”包:考虑一个像 twisted 这样的项目,由几个附加包组成(但不需要过多修改 distutils)。

  • 一个项目可能依赖于包 X.Y,而不必依赖于 X

  • 这些嵌套包可以位于您的python路径上的任何位置(它们不必位于同一目录中)

  • 一个小型(小于100 LoC)独立模块,为您完成所有魔法操作 —— 无需第三方合作。

示例布局

考虑以下目录结构,位于您的python路径上的任何位置(例如,site-packages

site-packages/

  com-ibm-storage/
    files...

  com-ibm-storage-plugins/
    files...

  com-ibm-pythontools/
    files...

在调用 nimp.install() 之后,以下导入将按预期工作

import com                              # a namespace package (empty)
import com.ibm                          # a namespace package (empty)
import com.ibm.pythontools              # a real package
com.ibm.pythontools.myfunc(1,2,3)

# and of course `from x import y` works too
from com.ibm.storage import ScsiDisk

# note how the `plugins` package is "injected" into `storage`
from com.ibm.storage.plugins import MySQLPlugin

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

nimp-0.9.2.tar.gz (3.9 kB 查看哈希)

上传时间

构建分布

nimp-0.9.2.win32.exe (202.2 kB 查看哈希)

上传时间

支持者: