python中,如果自己写的模块与系统模块重名,该怎么调用系统的模块?

1,在当前目录创建一个子文件夹,例如mine,在mine里放一个__init__.py,不用有代码,空文件即可。使用的时候:import mine.re 2,在sys.path上做手脚,把第一个空串挪到最后面去:import sys sys.path = sys.path[1:]sys.path.append("")这样当前目录会跑到最后面去,从而达到最后搜索的目的...
python中,如果自己写的模块与系统模块重名,该怎么调用系统的模块?
sys.path是一个list,存放了当前所有import搜索的路径。
绝大多数情况下,首个元素是"",即空串,也就是说,当你import re的时候,首先搜索的是"re",这时候就会直接在当前目录搜索到re。如下图:

解决方法也有不止一个:
1,在当前目录创建一个子文件夹,例如mine,在mine里放一个__init__.py,不用有代码,空文件即可。使用的时候:import mine.re
2,在sys.path上做手脚,把第一个空串挪到最后面去:
import sys
sys.path = sys.path[1:]
sys.path.append("")
这样当前目录会跑到最后面去,从而达到最后搜索的目的。
不过这很可能有副作用,即你创建的模块,不能和前面搜索路径里的任何文件重名,否则会无法import你的模块。
这也是为什么默认把当前路径放在最前搜索的原因,因为是用户自己写的,显然优先级最高。

尽管就你的问题作出分析和提出一些可能的解决办法,但是严重不建议在实际工程起和系统模块重名的文件名,这是自找麻烦。
当然,研究探讨它的实现原理,始终是值得肯定的。
最后强调一下,当你在当前文件夹创建了一个sys.py时,方法2不好用!
2022-06-16
不改名,确实不知道怎么处理。
但是,一般情况下,主动避免是一种比较明智的选择。即便能掌握导入模块时的搜索路径,但你并不能把控不同系统搜索时可能存在不同的策略。这样子还可能需要对不同的系统进行判断而使用不同的策略。没必要嘛。规避掉可以节省自己多少时间,为何非要在这里死磕呢?
而如果是将这些 python文件做成一个 package的话,倒是可以精确导入同名模块。可对于其他人来说,相同命名的模块可能会造成误解,增加理解代码的时间和成本。还是那句话,甚无必要。
多数情况下,为了必要重名都要将重名关键词后面主动加上后下划线。
个人之见,实在没有必要命名为重名。百害而无一利。2022-06-16
自己写的模块和python模块重名时,如果用import导入,优先导入的是自己写的 可以修改自己的模块名称2022-06-14
mengvlog 阅读 65 次 更新于 2025-09-09 17:00:27 我来答关注问题0
  • 1,在当前目录创建一个子文件夹,例如mine,在mine里放一个__init__.py,不用有代码,空文件即可。使用的时候:import mine.re 2,在sys.path上做手脚,把第一个空串挪到最后面去:import sys sys.path = sys.path[1:]sys.path.append("")这样当前目录会跑到最后面去,从而达到最后搜索的目的。

  • 在Python中导入自己编写的模块,首先要确保模块文件与需要导入模块的脚本文件位于同一目录下,或者将模块文件放置于Python默认的模块目录,如lib或script目录。这样,只需要使用import关键字加上模块名即可完成导入。需要注意的是,导入时无需包含文件的扩展名,直接使用文件名即可。例如,假设有一个名为my_mo...

  • python怎么导入自己写的模块 1、首先新建一个python项目(如下图所示)。2、用import的方式导入math和turtle模块(如下图所示)。3、这样在以后的编程中就可以使用里面的函数了(如下图所示)。4、from方式的格式为:from 模块名 import 函数名(如下图所示)。5、使用as方式就相当于给模块起了一个别名,...

  •  八哥说科技 我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗?

    可以的,只要把python模块转换成dll模块,利用Python自带的ctypes模块加载调用就行。ctypes 是Python的外部函数库。它提供了与 C语言兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。ctypes导出了cdll对象,在 Windows 系统中还导出了windll和oledll对象用...

  •  加_QQ54501OO7 python2 怎么导入自己写的模块

    内置函数是一些使用的比较多的函数,所以python解释器会帮我们自导导入,同时大部分函数也是用c写的,这样效率也要高不少。random,math这些使用频率不是特别高,所以是作为标准模块存在的,这些都在python的安装目录里,你可以通过:1 2 import random print random.__file__找到对应的文件位置。

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部