另一种相对进口

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惯用的那种复制),不需要修改搜索路径,在模块中有演示代码,这样它们就可以像主程序一样运行,并作为一个模块嵌入到整个系统中。

在那之前,我有这个。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么Struts 2注释没有LongRangeFieldValidator   java哪个更高效   简单Java加密/解密(错误:意外类型| |必需:找到变量:值)   java谷歌mlkit的条形码扫描仪无法识别任何条形码   java如何捕捉游标窗口错误   java依赖于使用ivy的gradle项目   java是检查谁在使用线程的好方法。interrupted()和不抛出InterruptedException?   java添加。在Eclipse中将文件类化为构建路径   java如何将JFreechart添加到面板?   java数学。当参数名为“e”时,mxparser返回NaN   java使用hadoop文件系统API模拟hadoop fs命令(hadoop fs cat)   图像Java代码打开应用程序并显示图标   使用Java POST请求在Django Tastypie上创建资源,但得到500个错误代码   java SpringBoot显示注销按钮,仅适用于未使用thymeleaf登录的用户   java Android后台服务和活动之间的自动通信   javascript在本地存储中设置键和值,以便在边缘浏览器中加载URL   java通过配置创建重复的springboot控制器