首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python的绝对导入和相对导入

    Python import 的搜索路径在当前目录下搜索该模块在环境变量 PYTHONPATH 中指定的路径列表中依次搜索在 Python 安装路径的 lib 库中搜索Python import 的步骤python...所有加载的模块信息都存放在 sys.modules 结构中,当 import 一个模块时,会按如下步骤来进行如果是 import A,检查 sys.modules 中是否已经有 A,如果有则不加载,如果没有则为...所谓的包,就是包含 __init__.py 文件的目录,该文件在包导入时会被首先执行,该文件可以为空,也可以在其中加入任意合法的 Python 代码。相对导入可以避免硬编码,对于包的维护是友好的。...绝对导入可以避免与标准库命名的冲突,实际上也不推荐自定义模块与标准库命令相同。...前面提到含有相对导入的模块不能被直接运行,实际上含有绝对导入的模块也不能被直接运行,会出现 ImportError:ImportError: No module named XXX这与绝对导入时是一样的原因

    4.5K32

    python导入父级别目录

    // // // // 一个python文件就是一个模块,使用独立的命名空间,但实际使用过程中单单用模块来定义python...因为一个大型的系统几千上万个模块是很正常的事情,如果都聚集在一起显然不好管理并且有命名冲突的可能,因此python中也出现了一个包的概念。...模块包在文件系统中的表示就是一系列目录的集合,通过目录的层级结构形成模块包的层级结构,最终的模块文件就位于最后的目录中。...sys.path中去了,然后再执行导入就会正常导入模块并执行模块中的语句了。...因此,我们可以根据搜索路径规则的第2步中说的来设置PYTHONPATH环境变量就可以满足不同使用情况下都可以找到模块了。

    3.8K10

    python学习笔记5.1-理解模块和包

    模块 在python中可以将模块理解为一个包含了特定功能的类、函数、变量的文件,它与其他的python脚本文件也没有什么区别,文件类型也是.py文件,模块名就是该文件名。...1.1 模块搜索路径 当python调用模块的时候,首先它要知道去哪儿搜索,python模块的搜索路径有: 1) 当前程序的主目录,也就是你运行程序的目录。...有了以上知识的了解,一般出现“ImportError: No module named ‘…’”的异常,肯定是因为该module的路径没有被包含,在主程序中用sys.path.append()函数添加该...2) 将模块目录添加到系统环境标量中的PYTHONPATH中 3) 用函数sys.path.append(‘…’)添加 4) 添加.pth文件。...在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称就是了。

    75571

    Python类、模块、包的区别

    不建议使用,不清楚导入了什么符号,有可能覆盖自己定义的东西 内建函数dir()可以查看模块定义了什么名字(包括变量名,模块名,函数名等):dir(模块名),没有参数时返回所有当前定义的名字 模块搜索路径...client被导入后,python解释器就在当前目录下寻找client.py的文件,然后再从环境变量PYTHONPATH寻找,如果这环境变量没有设定,也不要紧,解释器还会在安装预先设定的的一些目录寻找。...* 如果包的__init__.py定义了一个名为__all__的列表变量,它包含的模块名字的列表将作为被导入的模块列表。...python包是: 包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。...通俗一点:包是一个包含__init__.py 文件的目录,该目录下一定得有这个__init__.py文件和其它模块或子包。

    1.2K20

    一文搞懂 Python 的模块和包,在实战中的最佳实践

    在设计之初,我就考虑到了模块重名的问题,所以在 main.py 文件头部,我并没有 from 包 import 模块,而是 from 包 import 包,以避免模块命名冲突的问题。...至此了然,上面的报错:spider.realtime 下没有 overview,也就不足为奇了,可怎么解决?... 包下的 __init__.py 文件中,导入需要的 overview 模块,这样 realtime 私有名称空间中就有了 overview 名称符号,我们就可以用 realtime.overview ...设置 PYTHONPATH 环境变量 【推荐】 在 Python 中,其实我们还可以通过设置 PYTHONPATH 环境变量的方式,来指定追加的类库搜索目录,底层原理等同于使用 sys.path.append.../activate 激活虚拟环境后,PYTHONPATH 环境变量也就自动设置好了。

    1.6K41

    Python基础之:Python中的模块

    对于大型的应用程序来说,一个文件可能是不够的,这个时候我们需要在文件中引用其他的文件,这样文件就叫做模块。 模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py 。...sys.path的初始目录包括: 当前目录 PYTHONPATH 指定的目录 安装的默认值 dir 要想查看模块中定义的内容,可以使用dir函数。...上面我们定义了4个包,分别是sound,sound.formats, sound.effects, sound.filters。 注意,如果是包的话,里面一定要包含 __init__.py 文件。...__init__.py 可以是一个空文件,也可以执行包的初始化代码或设置 __all__ 变量。 当导入的时候, python就会在 sys.path 路径中搜索该包。...如果没有定义 __all__,from sound.effects import * 语句 不会 从包 sound.effects 中导入所有子模块到当前命名空间;它只会导入包 sound.effects

    26630

    Python入门之Python引用模块和查找模块路径

    对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义。...可以通过设置一个环境变量PYTHONPATH为Python增加一个搜索路径,以方便查找到相关Python模块(不同的操作系统环境变量的设置稍有不同,默认以下都是WIndows环境),这与众多应用程序需要设置一个系统环境变量的道理是一样的...我们先设置一个环境变量PYTHONPATH,以便Python解释器找到person.py模块,然后import person模块,即可访问其中的方法或变量。...实际上,Python通过目录和文件构建包结构,并且包是层层嵌套的,和目录层层嵌套是一样的,这样就构成了包内的访问路径(或者命名空间,也可以说Python应用的命名空间与其目录和文件结构是对应了,似乎缺少了一些灵活...倘若animal文件夹内还有文件夹作为包,也必须包含__init__.py文件。这样就层层标识了访问的路径。

    1.4K90

    那些Python中的模块

    对于大型的应用程序来说,一个文件可能是不够的,这个时候我们需要在文件中引用其他的文件,这样文件就叫做模块。 模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py 。...和java中的main方法一样,如果我们想要在模块中进行一些测试工作,有没有类似java中main方法的写法呢?...sys.path的初始目录包括: 当前目录 PYTHONPATH 指定的目录 安装的默认值 dir 要想查看模块中定义的内容,可以使用dir函数。...注意,如果是包的话,里面一定要包含 __init__.py 文件。 __init__.py 可以是一个空文件,也可以执行包的初始化代码或设置 __all__ 变量。...如果没有定义 __all__,from sound.effects import * 语句 不会 从包 sound.effects 中导入所有子模块到当前命名空间;它只会导入包 sound.effects

    70930

    Python基础之:Python中的模块

    对于大型的应用程序来说,一个文件可能是不够的,这个时候我们需要在文件中引用其他的文件,这样文件就叫做模块。 模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py 。...sys.path的初始目录包括: 当前目录 PYTHONPATH 指定的目录 安装的默认值 dir 要想查看模块中定义的内容,可以使用dir函数。...上面我们定义了4个包,分别是sound,sound.formats, sound.effects, sound.filters。 注意,如果是包的话,里面一定要包含 __init__.py 文件。...__init__.py 可以是一个空文件,也可以执行包的初始化代码或设置 __all__ 变量。 当导入的时候, python就会在 sys.path 路径中搜索该包。...如果没有定义 __all__,from sound.effects import * 语句 不会 从包 sound.effects 中导入所有子模块到当前命名空间;它只会导入包 sound.effects

    33220

    关于 python ImportError: No module named 的问题

    事后我查了下 python 的import机制,以备忘: python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包。...如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,比如在a.py中使用b.py: import b 但是如果要import一个不同目录的文件(例如b.py)该怎么做呢...但是如果你没有发现上面代码有什么问题的话,可要注意了,上面的代码有时会找不到模块或者包(ImportError: No module named xxxxxx),这是因为: sys模块是使用c语言编写的...,而造成无效的搜索目录(sys.path)设置。...关于与python相关的环境变量有那些,请参考: http://docs.python.org/using/cmdline.html  在页面上找到PYTHONPATH 以下是该环境变量的描述: PYTHONPATH

    2.9K50

    Python中`__init__.py`文件的作用是什么?

    当 Python 解释器遇到包含 __init__.py 文件的目录时,它将该目录视为包,并允许你使用点表示法从该包导入模块。 其次,__init__.py 文件用于初始化包。...其次,__init__.py 文件是控制包的导入行为所必需的。通过选择性地从包中导入符号,你可以避免名称冲突并保持代码井然有序。 最后,__init__.py 文件通常用于设置包级配置和状态。...init__.py 文件中定义了一个名为 version 的包级变量。...__init__.py 文件可以引发 ImportError:如果您需要为包执行一些设置操作,例如导入必需的模块,您可以使用 __init__.py 文件来执行此操作。...但是,如果设置操作失败,您可以在 __init__.py 文件中引发 ImportError 以防止使用该包。

    19710

    Python 模块大全

    Python 模块 1 模块让你能够有逻辑地组织你的Python代码段。 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。 模块也是Python对象,具有随机的名字属性用来绑定或引用。...简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。...---- From…import* 语句 把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明: from modname import * 这提供了一个简单的方法来导入一个模块中的所有项目...比如想重载hello模块,如下: reload(hello) 1 Python中的包 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。...这个文件有如下源代码: def Pots(): print ("I'm Pots Phone") 同样地,我们有另外两个保存了不同函数的文件: Phone/Isdn.py 含有函数Isdn()

    1.4K20

    python 中 __init__.py 的作用

    先上结论 __init__.py的作用是让一个呈结构化分布(以文件夹形式组织)的代码文件夹变成可以被导入import的软件包。...举例解释 为了形象地解释,我建立了一个test文件夹,其中一个文件夹A打算建立成一个软件包,然后尝试在B文件夹的的run.py文件下导入A包中的模块。...实验一:不包含__init__.py test文件夹中包含的文件如下:  此时如果在B/run.py中运行以下语句的结果为: 语句 运行结果 import A ImportError: No...进阶 在上述实验中,发现导入A时并未将其下的子模块自动导入,当__init__.py文件不为空时,其中可以填写from . import A_A类似语句实现自动子模块导入。...不含有__init__.py的包也可以当作命名空间包使用,使命名一致的包被统一管理。

    25730

    2018年10月5日python相对引入和绝对引入详解

    在当前文件夹,也就是direct(常用就是第一种) 2. 在环境变量PYTHONPATH指定的文件夹中的查询utils.py(很少去配置) 3....在Python 解释器sys.path指定的文件夹中查询utils.py(很少去设置) # 相对路径引入 from . import utils print(utils.msg) 相对引入的方式没有错,...但是如果直接运行的话就会报错: ImportError: cannot import name ‘utils’ 因为如果当前模块直接运行的话Python解释器就会认为当前模块就是顶层模块,是唯一一个,就不存在相对引入的说法了...main.py: from . import plane print(plane.name) print(plane.utils.msg) 备注: 切记不要在包声明文件__init__.py中没有定义任何代码的情况下...包:包含多个python模块的文件夹,包含一个特殊的__init__.py声明文件         包含多个模块,具备强大功能的程序!

    87420

    Python 模块

    模块让你能够有逻辑地组织你的Python代码段。 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。 模块也是Python对象,具有随机的名字属性用来绑定或引用。...简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。...From…import* 语句 把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明: from modname import * 这提供了一个简单的方法来导入一个模块中的所有项目...比如想重载hello模块,如下: reload(hello) Python中的包 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。.../usr/bin/python -- coding: UTF-8 -- def Pots(): print “I’m Pots Phone” 同样地,我们有另外两个保存了不同函数的文件: Phone

    85030

    python模块与包揭秘

    模块文件的搜索路径: 程序主目录 pythonpath目录(python的环境变量) 标准链接库目录 任何.pth文件的内容 pythonpath就是python得一个环境变量,安装了python的朋友应该都配置了的吧...这里写图片描述 导入模块时的一些细节 我们都知道导入模块有import与from两个语句,这两个语句的区别有必要再次啰嗦一下。首先我们已经知道导入是一种赋值操作。...import语句我们前面也说了,模块对象被赋值给了一个变量名,然后那个模块中的内容都是通过【模块名.属性】的形式访问的,也就是被导入模块的命名空间与当前文件的命名空间是独立的,没有相互污染。 ?...关于包还有一个比较重要的地方,可能大家从我上面给的例子中也发现了这么一个文件__init__.py,这个文件是把一个目录变成一个python包的关键所在,它里面可以没有任何内容,但是必须得存在!...其实从它的名字就可以知道它是用作初始化的,python在首次进行包导入时,都会执行相应的__init__.py,所以如果你在这个文件中赋值了一些变量,那么在包导入之后,这些变量会出现在该包的命名空间中,

    48910
    领券