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

Python - 导入 global/site-packages 模块而不是本地目录中的同名文件

在Python中,当我们导入模块时,解释器会按照一定的搜索路径来查找对应的模块文件。默认情况下,解释器会先搜索当前目录,然后是内置模块和第三方库,最后才是全局的site-packages目录。

如果我们的本地目录中存在与要导入的模块同名的文件,而且我们希望导入的是全局的site-packages目录中的模块,可以使用绝对导入或相对导入来明确指定导入的模块路径。

绝对导入是指从全局的site-packages目录中导入模块,可以使用以下语法:

代码语言:python
代码运行次数:0
复制
import module_name

相对导入是指从当前目录或当前模块所在的包中导入模块,可以使用以下语法:

代码语言:python
代码运行次数:0
复制
from . import module_name

需要注意的是,相对导入只能在包内部使用,并且需要在包的init.py文件中设置all变量来指定可以导入的模块。

优势:

  1. 避免命名冲突:使用绝对导入或相对导入可以避免与本地目录中同名文件的命名冲突,确保导入的是正确的模块。
  2. 提高代码可维护性:使用标准的导入方式可以提高代码的可读性和可维护性,使其他开发人员更容易理解和修改代码。

应用场景:

  1. 在开发过程中,如果我们需要导入全局的site-packages目录中的模块而不是本地目录中的同名文件时,可以使用绝对导入或相对导入来明确指定导入的模块路径。

推荐的腾讯云相关产品和产品介绍链接地址:

  1. 腾讯云函数计算(SCF):腾讯云函数计算(Serverless Cloud Function,SCF)是一种无服务器计算服务,可帮助您构建、运行和管理无服务器应用程序。它支持多种编程语言,包括Python,可以方便地部署和运行Python代码。了解更多信息,请访问:腾讯云函数计算

以上是关于Python导入global/site-packages模块而不是本地目录中的同名文件的完善且全面的答案。

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

相关·内容

Python 模块加载顺序

1.基本概念module:模块, 一个 py 文件或以其他文件形式存在可被导入就是一个模块package:包,包含有 init 文件文件夹relative path:相对路径,相对于某个目录路径...只是 Python 解释器启动时就加载到了 sys.modules缓存起来了。所以,即使在同目录下有同名模块,解释器依然是可以找到正确 os 模块!...redis 属于第三方模块,默认安装位置是 Python 环境变量 site-packages,解释器启动之后,会将此目录加到 sys.path,由于当前目录会在 sys.path 首位,当前目录...4.交互式执行环境查找顺序交互执行环境,解释器会自动把当前目录加入到sys.path,这一点和直接执行文件是一样,但是这种方式下,sys.path0 是存储的当前目录相对路径,不是绝对路径。...8.总结Python 通过查找 sys.path 来决定包导入Python解释器启动时加载模块缓存 > 同级目录 > sys.path1:。

10310
  • python模块和包

    ):指的是python源代码文件 包(package):指的是模块组织在一起放入和包名同名目录及相关文件 ---- 可以将代码量较大程序分割成多个有组织,彼此间独立但又能互相交互代码片段...顶层文件:包含了程序主要控制流程 模块文件:为顶层文件或其他模块提供各种功能性组件 模块首次导入(或重载)时,Python会立即执行模块文件顶层程序代码(不在函数内代码),位于函数体内代码直到函数被调用后才会执行...结论: 使用频率高文件,使用频率多应该放置在_init_.py,因为模块在初始化过程总会加载目录_init_.py文件及其中内容,但其不会执行和导入其他相关子模块 ---- 若目录对应..._init_.py 不存在,则进行下一个对应模块,作为一个好习惯是_init_.py文件必须有,python2进行了限制,必须有,python3则限制不严,但建议必须存在 4 模块和包总结...语句或者from导入模块模块名称最前面不是以.开头 绝对导入总是去搜索模块搜索路径找 ---- 相对导入 只能在包内使用,且只能用在from语句中 使用.点号,表示当前目录内 ..表示上一级目录

    1.4K10

    python3绝对路径,相对路径

    或之前, Python会先查找当前目录下有没有string.py, 若找到了,则引入该模块,然后你在main.py可以直接用string了。...我们运行task时候是在程序目录外面,也就是my_proj,而非tasks所在目录,我们导入程序代码到python解释器环境运行,而非直接在程序目录运行,所以代码celery  python...解释器是到python环境变量中去寻找,最终导入python程序目录celery而非my_proj程序目录我们自己写celery模块,所以能正常运行。...总结:以后我们自己模块最好不要给系统软件包或模块同名,或则会出现蛋疼问题,如果实在要同名要注意用绝对路径导入from xxxx.xxx import xxx,不然会出现莫名奇妙问题,如果直接import...\\python\\lib\\site-packages\\win32\\lib', 'C:\\python\\lib\\site-packages\\Pythonwin'] python当前执行模块所在目录会自动加入到

    97420

    Python基础】08、Python

    (不在函数内代码),位于函数主体内代码直到函数被调用后才会执行       3、模块执行环境     模块是被导入,但模块也可以导入和使用其它模块,这些模块可以用python或其它编程语言写成...    模块可内含变量,函数以及类来进行其工作,函数和类可以包含变量和其它元素 4、导入模块      在导入模块时只能使用模块名,不能使用带.py后缀模块文件名  import语句:      ...      from将一个或多个变量名赋值给导入模块模块同名对象 模块就是名称空间        模块名称空间可以通过属性__dict__或dir(M)来获取               模块属性可通过点号...(.)运算符获取,格式为M.attr        模块是一个独立作用域(本地变量就是全局变量) 5、import工作机制 import语句导入指定模块时会执行三个步骤: 找到模块文件      ...模块文件所有语句会依次执行,从头至尾,此步骤任何对变量赋值运算,都会产生所得到模块文件属性 注意:  模块只在第一次导入时才会执行如上步骤:               后续导入操作只不过是提取内存已加载模块对象

    1.8K10

    python--如何优雅import

    我最怕遇到随地import... import我们一般是集中放在文件开头,PEP8对于导入顺序也有建议: PEP8 有建议 Python 模块 import 导入顺序: 1 引入标准库里模块...在Python,os模块是标准库一部分,不是内置函数一部分。 内置函数,如print()、len()等,是可以直接在Python代码中使用,无需导入任何模块。...os模块,虽然是Python解释器自带,但在使用前需要先导入。所以,当我们说“内置模块”时, 通常是指Python标准库模块,这些模块Python解释器已经包含,无需额外安装。...了解内置模块和标准库其实主要是想介绍下,import模块查找顺序 首先导入内置模块,如果导入不是内置模块Python 会依次在 sys.path 这个数组每个路径寻找。...首先我们先了解模块和包区别: 模块(module) python中一个py文件就是一个模块,module_name.py,module_name就是模块名 包(package) 包就是目录,包里面可以有

    956191

    学了半天,import 到底在干啥?

    查找是否已导入同名模块 首先,Python会按照import xxx中指定包名,到sys.modules查找当前环境是否已经存在相应包——不要奇怪为什么都没有导入sys这个模块就有sys.modules...sys是Python内置模块,也就是亲儿子,导入只是意思一下,让我们这样外人在导入环境也可以使用相关接口而已,实际上相应数据对Python而言从始至终都是透明。 ?...在特定路径下查找对应模块 前面我们讲到了,当我们导入某个模块时,Python先会去查询sys.modules,看其中是否存在同名模块,查到了那当然皆大欢喜,Python直接把这个模块给我们用就好了,毕竟儿子那么多...在使用PyCharm时候倒是一切顺遂,因为PyCharm会自动将项目的根目录加入到导入搜索路径,也就是说像下面这样项目结构,在任意模块中都可以很自然地通过import A导入模块A,用import...或者说就是原生Python环境呢? 很自然地我们就会想到:那就手动把项目根目录加入到sys.path中去嘛。

    83630

    Python面试常见问题集锦:基础语法篇

    问题集锦:模块篇 问题1:什么是Python模块? **答案:**模块Python组织代码单元,通常对应一个.py文件模块可以包含变量、函数、类以及其他Python语句。...**答案:**Python包是一种特殊目录结构,用于组织多个相关模块。包目录结构包含一个名为__init__.py(即使为空)文件,该文件标志着该目录为一个包。...当使用import语句导入模块时,Python会按照sys.path目录顺序依次查找对应.py文件或包。如果找到匹配模块文件或包,就进行导入;否则抛出ModuleNotFoundError。...bash export PYTHONPATH="/path/to/custom/module:$PYTHONPATH" 使用site-packages目录:将自定义模块安装到Pythonsite-packages...这样,系统会自动将该目录添加到sys.path模块可以像标准库模块一样被轻松导入

    18310

    Python面试常见问题集锦:基础语法篇

    问题集锦:模块篇问题1:什么是Python模块?答案:模块Python组织代码单元,通常对应一个.py文件模块可以包含变量、函数、类以及其他Python语句。...答案:Python包是一种特殊目录结构,用于组织多个相关模块。包目录结构包含一个名为__init__.py(即使为空)文件,该文件标志着该目录为一个包。...答案: sys.path是一个列表,包含了Python解释器在导入模块时会查找目录列表。当使用import语句导入模块时,Python会按照sys.path目录顺序依次查找对应.py文件或包。...Python安装目录stdlib目录,包含标准库模块。环境变量PYTHONPATH指定目录列表(如果存在)。一些平台相关默认目录(如Windows上site-packages目录)。...bashexport PYTHONPATH="/path/to/custom/module:$PYTHONPATH"使用site-packages目录:将自定义模块安装到Pythonsite-packages

    13610

    python module manage

    模块首次导入(或重载)时,python会立即执行模块文件顶层程序代码(不在函数内代码),位于函数主体内代码直到函数被调用后才会执行。...python导入模块     在导入模块时只能使用模块名,不能使用带.py后缀模块文件名     import语句:导入指定整个模块,包括生成一个以模块名命名名称空间     import...import 和from 都是隐性赋值语句     import 将整个模块对象赋值给一个变量名;from将一个或多个变量名赋值给导入模块模块同名对象     模块就是名称空间:模块名称空间可以通过属性...(3) 执行模块代码来创建其所有定义对象:模块文件所有语句会依次执行,从头至尾,此步骤任何对变量名赋值运算,都会产生所得到模块文件属性。     ....pth文件)     这四个组件组合起来即为sys.path所包含路径,python会选择"在搜索路径第一个符合导入文件名"文件

    65910

    python高级-模块(14)

    通俗点:模块就好比是工具包,要想使用这个工具包工具(就好比函数),就需要导入这个模块 模块概念: 每一个以扩展名py结尾python源代码文件都是一个模块 模块名同样也是一个标识符,需要符合标识符命名规范...,同时为模块指定别名为myTest import demo as myTest #导入模块中所有工具,不推荐,工具同名不好排查 #from...import * #from...import导入模块部分工具.../python2.X/) 任何.pth文件内容(如果存在的话).新功能,允许用户把有效果目录添加到模块搜索路径中去 .pth后缀文本文件中一行一行地列出目录。...Program Files\\Python37\\lib\\site-packages', '/home/Se7eN_HOU'] 五、模块制作 1、定义自己模块Python,每个Python文件都可以作为一个模块...,应该是单独执行test.py文件时才应该执行,不应该是其他文件引用执行。

    71720

    Python模块和包

    只提取内存已加载模块对象。...这个目录总是被优先搜索,因此主目录文件会覆盖路径上其它目录具有相同名文件,但不会覆盖内建模块。...第三方扩展应用site-packages目录 最后,python会自动将标准库site-packages目录添加到模块搜索路径。通常情况下,这是大多数第三方扩展安装地方。...顶层文件字节码是在内部使用后就丢弃导入文件字节码则保存在文件从而可以提高之后导入速度。 顶层文件通常是设计成直接执行,不是导入。...因此一般情况下,如果追求速度,那么直接选择使用PyPy,不是使用优化字节码。比较优化字节码快速度依旧是非常有限。 总结 导入(import)会在搜索,编译,运行导入文件

    50200

    python模块导入细节

    python需要搜索模块文件在何处时,首先搜索内置模块,如果不是内置模块,则搜索sys.path路径列表,搜索时会从该属性列出路径按照从前向后顺序进行搜索,并且只要找到就立即停止搜索该模块文件...例如,在/tmp/目录下执行/pycodea.py文件 cd /tmp python /pycode/a.py 其中/tmp为当前目录/pycode是程序文件a.py所在目录。...如果a.py中导入b.py,那么将首先搜索/pycode,不是/tmp。...一般地,模块文件只用来声明变量、函数等属性,以便提供给导入模块使用,不应该有其他任何操作性行为,比如print()操作不应该出现在模块文件,但这并非强制。...from导入变量 from导入模块时,会先执行完模块文件,然后将指定部分属性重新赋值给当前程序文件同名全局变量。

    1.9K40

    Python 自定义包导入问题 和 打包成exe无法在别的电脑运行问题

    说明 每一个包目录下面都会有一个__init__.py文件,这个文件是必须存在,否则,Python就把这个目录当成普通目录(文件夹),不是一个包。...__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块模块名就是对应包名字。调用包就是执行包下__init__.py文件。...问题描述 在一个文件要引入一个自定义包模块,出现模块无法导入问题, 此时采取第一种解决方法: 先导入sys模块 然后通过sys.path.append(path)函数来导入自定义模块所在目录 导入自定义模块...上面的解决方法会导致以下问题: 可以在本地成功运行,但是打包成exe以后,到别的电脑上无法运行,因为sys.path.append(path)里面的path在别的电脑上不一定存在。...第二种解决方法: 不在代码里使用sys.path.append(path),保证代码里不存在本地绝对路径,把要导入自定义包拷贝到site-packages目录下, 然后再打包成exe以后就可以在别的电脑上成功运行

    2.6K20

    【语法05】Python模块

    为此 Python 提供了一个办法,把这些定义存放在文件,为一些脚本或者交互式解释器实例使用,这个文件被称为模块模块是一个包含所有你定义函数和变量文件,其后缀名是.py。...因此若像我一样在当前目录下存在与要引入模块同名文件,就会把要引入模块屏蔽掉。 了解了搜索路径概念,就可以在脚本修改sys.path来引入一些不在搜索路径模块。...在一个模块(或者脚本,或者其他地方)最前面使用 import 来导入一个模块,当然这只是一个惯例,不是强制。被导入模块名称将被放入当前操作模块符号表。...,Python 会根据 sys.path 目录来寻找这个包包含目录。...Python 会进入文件系统,找到这个包里面所有的子模块,一个一个把它们都导入进来。 但是很不幸,这个方法在 Windows平台上工作不是非常好,因为Windows是一个大小写不区分系统。

    39720

    Python import导入模块 - reload() 导入内容

    redis-stable/ -rw-r--r--. 1 root root 1993430 Dec 5 01:37 redis-stable.tar.gz In [5]: 路径搜索 从上面列出目录里依次查找要导入模块文件...'' 表示当前路径 列表路径先后顺序代表了python解释器在搜索模块先后顺序 程序执行时添加新模块路径 ## 首先给路径添加一个 /home 路径 In [5]: sys.path.append...重新导入模块 模块导入后,import module不能重新导入模块,重新导入需用reload 要演示这个示例,首先需要写一个py文件,用来导入演示: [root@server01 test]# cat...是不是重启服务,然后重新导入?那不是很麻烦? 下面可以使用reload方法来解决这个问题: ?...多模块开发时注意点 下面这里准备了几个py模块文件,思考一下,关于import common 变化为 from common import HANDLE_FLAG之后会产生什么样结果?

    3K20

    解决python3关于import疑难杂症

    pythonimport与包管理 概念:模块与包 模块module:一般是以.py为后缀文件,也包括.pyo、.pyc、.pyd、.so和.dll后缀文件模块内定义了函数、类以及变量 包package...__name__:导入文件路径加文件名称 __builtins__:包含内置函数 python内置模块 os:提供文件目录系统级操作 sys:提供对解释器相关操作 hashlib:...绝对导入与相对导入 绝对导入和相对导入概念只针对于包内模块导入包内模块,注意如果foo.py和bar.py在同一个非包(没有__init__.py文件目录下,那么它们之间可以互相import,不存在绝对导入和相对导入问题...如果只是导入一个包import package不指名任何模块,且包__init__.py没有其他初始化操作,那么包下面的模块是无法被自动导入。 6....项目demo 假设当前你工程文件目录如下(仅针对python3): 注意这里我文件夹下并没有__init__.py,严格来讲它们并不是包,只是将联系紧密模块放在同一个文件夹下方便工程项目管理。

    1.7K30
    领券