跳转到主要内容

不同类型的相对导入

项目描述

简介

更类似于Ruby的require_relative,而不是Python的import_relative

当您有一个包含嵌套子模块的大型包时,这允许嵌套子模块相互引用,而不需要引入或了解整个顶层树或显式导入整个顶层树。

摘要

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或3中使用importlib。它们似乎会出错,因为它们找不到上级或类似的东西。

错误

抱歉,我们不处理“from列表”。

各种打包系统如pip和加载器可能无法与此一起使用。此代码很脆弱。

我总是想相信,已经存在一种方法可以从源代码树(不是distutils通常所做的副本)开发,不需要更改搜索路径,并且可以在模块中有示例代码,这样它们就可以像主程序一样运行,也可以作为整个系统中的模块嵌入。

在此之前,我只有这个。

项目详情


下载文件

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

源分布

import_relative-0.2.3.tar.gz (19.8 kB 查看哈希值)

上传时间: 源代码

构建版本

import_relative-0.2.3-py3.3.egg (7.6 kB 查看哈希值)

上传时间: 源代码

import_relative-0.2.3-py3.2.egg (7.5 kB 查看哈希值)

上传时间: 源代码

import_relative-0.2.3-py2.7.egg (7.5 kB 查看哈希值)

上传时间: 源代码

import_relative-0.2.3-py2.6.egg (7.5 kB 查看哈希值)

上传时间: 源代码

import_relative-0.2.3-py2.5.egg (7.5 kB 查看哈希值)

上传时间: 源代码

import_relative-0.2.3-py2.4.egg (7.6 kB 查看哈希值)

上传时间: 源代码

由以下提供支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面