Python模块的搜索路径
在Python中,模块搜索路径是指解释器用来查找导入模块的位置列表。了解和掌握Python模块搜索路径对于正确导入模块和管理模块的位置至关重要。
Python模块搜索路径的主要来源包括当前目录、Python标准库目录和用户自定义的目录。你可以通过sys模块中的sys.path来查看和修改模块搜索路径。
在本文章中,您将了解模块搜索路径。看看下面Python执行以下语句时会发生什么:
>>> import mod
>>> mod.a
[100, 200, 300]
>>> mod.s
'Computers are useless. They can only give you answers.'
当解释器执行上述语句时,它会在由以下的目录列表中进行搜索:mod.py
- 运行脚本的目录,或者当前目录
- 环境变量中包含的目录列表PYTHONPATH(如果已设置)。(PYTHONPATH的格式取决于操作系统,但应模仿PATH环境变量。)
- 安装 Python 时配置的与安装相关的目录列表
生成的搜索路径可在 Python 变量 中访问sys.path,该变量是从名为sys的模块获取的:
>>> import sys
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.7/bin', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']
注意:的具体内容sys.path取决于安装。上面的代码块在您的计算机上几乎肯定会略有不同。
因此,为了确保找到您的模块,您需要执行以下操作之一:
- 放在mod.py脚本所在目录,如果是交互模式放入当前目录
- 在启动解释器之前,修改环境变量包含所在的PYTHONPATH目录。
- 放入mod.py与安装相关的目录之一,您可能有也可能没有写入权限,具体取决于操作系统。
还有一个附加选项:您可以将模块文件放在您选择的任何目录中,然后sys.path在运行时进行修改,使其包含该目录。例如,在这种情况下,您可以放入mod.py目录/Users/chris/ModulesAndPackages,然后执行以下语句:
>>> sys.path.append(r'/Users/chris/ModulesAndPackages')
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.7/bin', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages', '/Users/chris/ModulesAndPackages']
>>> import mod
>>> mod.s
'Computers are useless. They can only give you answers.'
导入模块后,您可以使用模块的__file__属性确定找到该模块的位置:
>>> import mod
>>> mod.__file__
'/Users/chris/ModulesAndPackages/mod.py'
>>> import re
>>> re.__file__
'/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/re.py'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!