首页
学习
活动
专区
工具
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 字符集 (可能的字符集转换) . ....--我使用10g的imp功能,可以将由817导出的dmp文件直接导入10g中,这与该规则的介绍不同。...警告: 这些对象由 SCOTT 导出, 而不是当前用户 已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入 导入服务器使用 AL32UTF8 字符集 (可能的字符集转换...imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。 1. 获取帮助 imp help=y 2.

2.5K30

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 *语句导入(否则默认导入该目录下的所有)。 包相对导入 读者一定知道相对路径与绝对路径吧。...这里的相对导入与绝对导入其实就与他们类似。

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

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

    65810

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

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

    63430

    施工专题第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

    66330

    Python 中的魔法文件:__init__.py

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

    12510

    详解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

    43010

    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.7K20

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

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

    24220

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

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

    3.2K20

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

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

    91720

    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 请主要,相对导入是基于当前模块的名字进行导入的

    50720

    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

    69220

    Python3 与 C# 扩展之~模块专栏

    相同名字的函数和变量完全可以分别存在不同的模块中 我们自己在编写模块时,不必考虑名字会与其他模块冲突(不要和内置函数名字冲突) 1.3.导入多个模块 看着小明一愣一愣的,加上那瓶菊花茶的面子,课代表来了一个...from importlib import reloadreload(test) 当然了你也可以使用 imp下面的 reload方法(3.4往后,官方就不推荐使用 imp 了) 6.1.循环导入的问题...子模块相对独立,尽量别相互导入,通过父模块来调用 (有点像微服务的感觉) 这样不会混乱也不会出现循环导入的问题了 如果项目里面真的出现了循环导入,那么可以这么解决(参考): 重新设计架构,解除相互引用的关系...9.包系列(导入、发布、安装) 如果不同的人编写的模块名相同怎么办?...: 模块是一组Python代码的集合,可以使用其他模块,也可以被其他模块使用 比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 刚说完,小明就得意的看着小张,然后继续听课: 创建自己的模块时

    1.2K50

    Python中的模块和包

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

    78720

    【从零学习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 * 时导入的模块。

    14310
    领券