首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

相对导入使用imp时,__init__.py的行为不同

相对导入使用imp时,__init__.py的行为不同。相对导入是指在Python中,从当前模块开始,根据相对路径导入其他模块。

在Python 2中,当使用imp模块进行相对导入时,__init__.py文件会被执行。__init__.py文件是一个空文件或包含初始化代码的文件,用于标识一个目录为Python包。执行__init__.py文件可以执行包的初始化操作,例如设置包的属性、导入子模块等。

然而,在Python 3中,相对导入使用imp时,__init__.py的行为有所不同。Python 3引入了新的导入机制,即importlib模块。相对导入使用importlib时,__init__.py文件不会被执行。这是因为Python 3中的相对导入不再依赖于__init__.py文件来标识包,而是通过__init__.py文件的存在来确定包的子模块。

总结起来,相对导入使用imp时,__init__.py的行为在Python 2和Python 3中有所不同。在Python 2中,__init__.py文件会被执行,而在Python 3中,__init__.py文件不会被执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

oracle不同版本间数据导入导出oracle IMP 命令详解--Java学习网

下面是据此总结几个使用规则和相关测试: 规则1:低版本exp/imp可以连接到高版本(或同版本)数据库服务器,但高版本exp/imp不能连接到低版本数据库服务器 --1.1 使用9i客户端通过...已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中导入 导入服务器使用 AL32UTF8 字符集 (可能字符集转换) . ....--我使用10gimp功能,可以将由817导出dmp文件直接导入10g中,这与该规则介绍不同。...警告: 这些对象由 SCOTT 导出, 而不是当前用户 已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中导入 导入服务器使用 AL32UTF8 字符集 (可能字符集转换...imp使用基本格式:imp[username[/password[@service]]],以下例举imp常用用法。 1. 获取帮助 imp help=y 2.

2.4K30

python模块与包揭秘

module name1 = module.name1 name2 = module.name2 del module 重载模块 模块只会导入一次,如果想要再次导入需要使用imp.reload函数。...import语句后面的模块,这样做好处就是可以增加确定性,否则当你工程过大时候,在不同目录下存在同名文件,那么使用之前模块导入方式就会出现问题。...例如在目录test下有如下__init__.py: #__init__.py __all__ = ['x','y','z'] 那么在执行from test import *,该目录下x,y,z模块都会被导入...当然也可以不设置__all__,它作用就是可以自定义哪些文件或变量可以使用from *语句导入(否则默认导入该目录下所有)。 包相对导入 读者一定知道相对路径与绝对路径吧。...这里相对导入与绝对导入其实就与他们类似。

48210
  • 使用 AutoMapper 自动映射模型,处理不同模型属性缺失问题

    使用 AutoMapper 可以很方便地在不同模型之间进行转换而减少编写太多转换代码。不过,如果各个模型之间存在一些差异的话(比如多出或缺少一些属性),简单配置便不太行。...关于 AutoMapper 系列文章: 使用 AutoMapper 自动在多个数据模型间进行转换 使用 AutoMapper 自动映射模型,处理不同模型属性缺失问题 属性增加或减少 前面我们所有的例子都是在处理要映射类型其属性都一一对应情况...然而,如果所有的属性都是一样,那我们为什么还要定义多个属性类型呢(Attribute 不一样除外)。正常开发情况下这些实体类型都会是大部分相同,但也有些许差异情况。...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

    54710

    Python 骚操作,花式导包 8 种方法

    一般情况下,使用 import 语句导入模块已经够用。 但是在一些特殊场景中,可能还需要其他导入方式。 下面我会一一地给你介绍。 2....如果大于 0,则表示相对导入父目录级数,即 1 类似于 '.',2 类似于 '..'。...使用 imp imp 模块提供了一些 import 语句内部实现接口。...而从 Python 3.4 开始,imp 模块被否决,不再建议使用,其包含功能被移到了 importlib 模块下。...远程导入模块 我在这篇文章里(深入探讨 Python import 机制:实现远程导入模块),深入剖析了导入模块内部原理,并在最后手动实现了从远程服务器上读取模块内容,并在本地成功将模块导入导入

    62330

    施工专题第11篇:Python 包和模块使用总结

    如第1小节中Animal类,它完整名称实际为:animals.animal2.Animal,这样在使用Animal等类导入方法是下面这样: from animals.animal2 import...因为在导入一个包实际上导入__init__.py文件,利用此特性,可以在__init__.py文件中批量导入多个模块都在公用模块,而不再需要一个一个导入。...import sys import abc 在使用这些内置等模块,首先导入包: import animals # 导入包 在调用time模块,必须使用包名+模块名方式引用: def recordTime...4 解决找不到模块问题 我们知道Python中使用import导入需要包,然而平时使用像vscode, pycharm这类ide,经常出现找不到包问题,错误信息如下: Exception has...要想查看解释器目前查找目录顺序,先导入通过sys模块,使用sys.path,如下是import查看目录顺序: ['/home/zglg/mywork/md...mo/animals', '/home

    65730

    Python 中魔法文件:__init__.py

    在 __init__.py 文件中,我们可以导入包内其他模块,以便在导入可以直接使用这些模块中内容。...__init__.py 文件还可以控制包导入行为。通过定义 __all__ 变量,我们可以指定当使用 from package import * 语句,应该导入哪些模块、类或函数。...总之,__init__.py 文件在 Python 中起着重要作用,它帮助我们组织代码、控制导入行为,并进行包级别的初始化操作。...__init__.py 文件可以在每个层次包中发挥作用,帮助我们组织代码、控制导入行为,提高代码可维护性和可读性。...例如,在一个 Web 开发项目中,我们可以将不同功能模块分别放在不同包中,每个包都有自己 __init__.py 文件进行初始化和导入配置。

    7910

    详解Python项目开发自定义模块中对象导入使用

    背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入使用其中对象;2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将其分类并分散多个模块中,在编写小型项目最好也能养成这样好习惯...本文介绍Python自定义模块中对象导入使用。...,这是因为child文件夹被认为是一个包,而add.py是包中子模块,并没有随着child一起导入。...继续执行下面的代码: >>> import child.add >>> child.add.add(3,5) 8 自定义模块中对象成功被导入并能够正常使用,也就是说,如果要使用对象在子模块中,应该单独使用...原因在于,如果文件夹作为包来使用,并且其中包含__init__.py文件,__init__.py文件中特殊列表成员__all__用来指定from ... import *哪些子模块或对象会被自动导入

    3K50

    模块和包

    1.无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点,都要第一间提高警觉:这是关于包才有的导入语法   2.包是目录级(文件夹级),文件夹是用来组成...py文件(包本质就是一个包含__init__.py文件目录)   3.import导入文件,产生名称空间中名字来源于文件,import包,产生名称空间名字同样来源于文件,即包下__init...__init.py') __all__=['x','func','policy'] 绝对导入相对导入 绝对导入:以glance作为起始     相对导入:用.或者..方式最为起始(只能在一个包中使用...导入内置或者第三方模块(已经在sys.path中),但是要绝对避免使用import来导入自定义包子模块(没有在sys.path中),应该使用from... import ...绝对或者相对导入,且包相对导入只能用....py └── models.py 相对导入 相对导入 单独导入包   单独导入包名称不会导入包中所有包含所有子模块,如: #在与glance同级test.py中 import

    42710

    我们如何处理大型 Python 单体架构

    但是像这样分层可以减少代码库混乱,使其更容易理解和修改。 Kraken 是如何分层 在我写这篇文章,有 17 家不同能源和公用事业公司批准了 Kraken 使用。...我们为这些企业客户中每一个运行一个单独实例。现在,Kraken 主要特点之一是不同实例“相同又不同”。换句话说,它们之间有很多共享行为,但每个实例都有满足特定客户需求定制代码。...减少技术债务 在引入分层架构,我们没法从第一天开始就严格遵守。所以我们使用了 Import Linter 一个特性,在检查契约之前忽略某些导入。...然后,我们使用被忽略导入数量作为跟踪技术债务指标。这使我们能够了解改进情况,以及改进速度。...但这件事你做得越早,需要解决问题就越少。 小 结 Kraken 分层架构使我们这个非常庞大代码库得以保持健康,并且相对比较容易使用,尤其是在这么个规模下。

    23320

    ImportError: DLL load failed: 找不到指定模块

    在tensorflow学习中,想使用tensorflow-gpu版学习,充分利用计算机。但是跟网上很多博主方法安装gpu,cuda是安装成功了,但是却一直报以下一个错误。...('_pywrap_tensorflow_internal', fp, pathname, description) File "D:\soft\python3.6\lib\imp.py", line...243, in load_module return load_dynamic(name, filename, file) File "D:\soft\python3.6\lib\imp.py...,win10中,不仅要添加环境变量path值,还需要在PATHEXT中添加.DLL否则系统就无法加载指定模块,即使你文件中有.dll文件。...---- 我遇到这个问题是安装hanlp,安装hanlp时候是自动安装2.0.0a10这个版本,而2.0.0a10这个版本requirement tensorflow==2.1.0rc2,但实际不用去对应

    14.5K20

    Python中使用deepdiff对比json对象,对比如何忽略数组中多个不同对象相同字段

    最近忙成狗了,很少挤出时间来学习,大部分时间都在加班测需求,今天在测一个需求时候,需要对比数据同步后数据是否正确,因此需要用到json对比差异,这里使用deepdiff。...一般是用deepdiff进行对比时候,常见对比是对比单个json对象,这个时候如果某个字段结果有差异,可以使用exclude_paths选项去指定要忽略字段内容,可以看下面的案例进行学习:...那么如果数据量比较大的话,单条对比查询数据效率比较低,因此,肯呢个会调用接口进行批量查询,然后将数据转成[{},{},{}]列表形式去进行对比,那么这个时候再使用exclude_paths就无法直接简单排除某个字段了...从上图可以看出,此时对比列表元素的话,除非自己一个个去指定要排除哪个索引下字段,不过这样当列表数据比较多时候,这样写起来就很不方便,代码可读性也很差,之前找到过一个用法,后来好久没用,有点忘了,今晚又去翻以前写过代码记录...,终于又给我找到了,针对这种情况,可以使用exclude_regex_paths去实现: 时间有限,这里就不针对deepdiff去做过多详细介绍了,感兴趣小伙伴可自行查阅文档学习。

    76020

    使用Navicat数据库软件导入sql文件没有对应类型怎么解决?

    在之前文章中,我写过在服务器部署MairaDB10.3数据库记录,当时以为安装部署完成后就不需要我了,后来给了我一份PDF里面是要求,将备份好数据库文件导入到对应数据库里,但是导入过程中出现了问题...,并使用密码sA*dm1n&ql3进行身份验证。...这里密码使用了特殊字符来增加安全性。...导入使用 Navicat 导入“itlaoli.sql”文件至已创建数据库用户及对应数据库,但是当我打开数据库软件时候我发现在导入时候类型中居然没有(*.sql)文件,如图:我用软件次数一只手都能数过来...经验总结这次数据库导入经历让我学到了,原来不是能导出就可以顺利导入,就算不能导入也可以使用其他方案来代替,而且事前做好准备,在进行数据迁移之前,详细了解源数据库和目标数据库配置是非常重要

    40520

    python基础教程:包,对,没错,绝对不是双肩包!

    我们知道,图片有多种不同文件格式,一般它们以不同扩展名来识别,比如.jpg,.png,.gif等等。...导入Python包或Python子模块 导入方法和导入模块方法一样: import image 在程序中引用colors子模块: image.process.colors(...)...如果想使用colors这个名字,就用这种导入语句: from image.process import colors Python子包参考 当包含有子包(与例子中image包类似),我们可以使用绝对导入来引用兄弟包子模块...我们也可以使用 from module import name形式相对导入。这种导入使用前导点.来指示相对导入中涉及的当前包和父包。...比如,在 crop 模块中,你可以使用: from . import colors from .. import formats from ..formats import jpg_read 请主要,相对导入是基于当前模块名字进行导入

    50220

    python3--模块和包,软件开发规范

    模块搜索路径 python解释器在启动时会自动加载一些模块,可以使用sys.modules查看 在第一次导入某个模块(比如my_module),会检查该模块是否已经被加载到内存中(执行文件名称空间对应内存...无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点,都要第一间提高警觉:这是关于包才有的导入语法 2....policy.get() 执行结果 执行了glance下__init__.py文件 from policy.py 绝对导入相对导入 我们最顶级包glance是写给别人用,然后在glance包内部也会有彼此之间互相导入需求...,这时候就有绝对导入相对导入两种方式: 绝对导入:以glance作为起始 相对导入:用.或者..方式最为起始(只能在一个包中使用,不能用于不同目录内) 例如:我们在glance/api/version.py...(已经在sys.path中),但是要绝对避免使用import来导入自定义包子模块(没有在sys.path中),应该使用from... import ...绝对或者相对导入,且包相对导入只能用from

    68320

    Python中模块和包

    ,这些语句目的是初始化模块,它们只在模块名第一次遇到 导入import语句才执行(import语句是可以在程序中任意位置使用,且针对同一个模块很import 多次,为了防止你重复导入) 但是为了能够让程序可读性更强...import导入文件,产生名称空间中名字来源于文件,import 包,产生名称空间名字同样 来源于文件,即包下 __init__.py导入包本质就是在导入该文件 包A和包B下有同名模块也不会冲突...('mysql') 单独导入包名称不会导入包中所有包含所有子模块 import glance glance.cmd.manage.main() 解决方法 # glance/__init__.py from...绝对导入:以glance作为起始 相对导入:用.或者..方式最为起始(只能在一个包中使用,不能用于不同目录内) 绝对导入: 以执行文件sys.path为起始点开始导入,称之为绝对导入 优点: 执行文件与被导入模块中都可以使用...优点: 导入更加简单 缺点: 只能在导入包中模块才能使用 注意: 相对导入只能用于包内部模块之间相互导入,导入者与被导入者都必须存在于一个包内 试图在顶级包之外使用相对导入是错误,言外之意,必须在顶级包内使用相对导入

    77720

    【从零学习python 】38.Python包使用导入方式

    使用 一个模块就是一个 py 文件,在 Python 里为了对模块分类管理,就需要划分不同文件夹。...from newmsg import sendmsg 使用__init__.py文件,导入包里指定模块。 可以在newmsg里创建__init__.py文件,在该文件里导入指定内容。...() 不可以使用 recvmsg 模块,因为 __init__.py文件里没有导入这个模块 使用__init__.py文件,结合__all__属性,导入包里所有模块。...2. init.py文件有什么用 init.py 控制着包导入行为。init.py为空仅仅是把这个包导入,不会导入包中模块。可以在__init__.py文件中编写内容。...3. all 在__init__.py文件中,定义一个__all__变量,它控制着 from 包名 import * 导入模块。

    12910
    领券