如何查找Python模块的搜索路径?

2026-05-21 13:441阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1155个文字,预计阅读时间需要5分钟。

如何查找Python模块的搜索路径?

简要概述:由于某些原因,在使用Python时,通过import导入模块时找不到相应的模块。此时,解释器会抛出ImportError异常。那么,Python如何知道在哪里搜索模块的路径呢?

解释说明:当Python执行import语句时,它会按照以下路径搜索模块:

1. 当前目录:首先在当前工作目录中查找模块。

2.PYTHONPATH:一个环境变量,其中包含了额外的目录路径,Python会在此列表中搜索模块。

3.安装的第三方库目录:Python会查找已安装的第三方库所在的目录。

要查看Python搜索模块的完整路径,可以使用以下方法:

python

import sysprint(sys.path)

这段代码会输出Python搜索模块的完整路径列表。通过检查这个列表,可以确定Python在何处查找模块,以及是否需要调整PYTHONPATH或更改当前工作目录。


简述

由于某些原因,在使用 ​​import​​​ 时,Python 找不到相应的模块。这时,解释器就会发牢骚 - ​​ImportError​​。

那么,Python 如何知道在哪里搜索模块的路径呢?

| 版权声明:一去、二三里,未经博主允许不得转载。

模块搜索路径

当导入名为 ​​hello​​​ 的模块时,解释器首先搜索具有该名称的内置模块。如果没有找到,将在变量 ​​sys.path​​​ 给出的目录列表中搜索名为 ​​hello.py​​ 的文件。

​​sys.path​​ 从这些位置初始化:

  • 包含输入脚本的目录(或当前目录,当没有指定文件时)
  • ​​PYTHONPATH​​​(目录名列表,与 shell 变量​​PATH​​ 语法相同)
  • 与安装相关的默认值
>>> import sys
>>> sys.path
['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/site-packages']

注意: ​​''​​ 表示当前目录(当前脚本所在的路径)

例如,在 ​​/home/wang/workspace​​​ 中创建一个名为 ​​hello.py​​ 的模块,内容如下:

如何查找Python模块的搜索路径?

print('Hello')

然后,试图加载该模块:

>>> import os
>>>
>>> os.getcwd() # 获取当前目录
'/home/wang'
>>>
>>> import hello.py
...
ImportError: No module named 'hello'

很遗憾,由于 ​​sys.path​​​ 中没有包含 ​​/home/wang/workspace​​​ 这个路径,所以找不到 ​​hello​​​ 模块,从而引发 ​​ImportError​​。

添加模块搜索路径

为了解决上述问题,需要添加模块搜索路径,可以使用以下几种方式:

  • 动态增加路径
    临时生效,对于不经常使用的模块,这通常是最好的方式,因为不必用所有次要模块的路径来污染 ​​PYTHONPATH​​。
  • 修改​​PYTHONPATH​​ 变量
    永久生效,对于在许多程序中都使用的模块,可以采用这种方式。这将改变所有 Python 应用的搜索路径,因为启动 Python 时,它会读取这个变量,甚至不同版本的 Python 都会受影响。
  • 增加​​.pth​​ 文件
    永久生效,这是最简单的、也是推荐的方式。Python 在遍历已知的库文件目录过程中,如果遇到 ​​.pth​​ 文件,便会将其中的路径加入到 ​​sys.path​​ 中,于是 ​​.pth​​ 中所指定的路径就可以被 Python 运行环境找到了。

动态增加路径

通过 ​​sys​​​ 模块的 ​​append()​​​ 方法在 ​​Python​​ 环境中增加搜索路径:

>>> import sys
>>> sys.path.append('/home/wang/workspace')

现在,查看搜索路径:

>>> sys.path
['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/site-packages', '/home/wang/workspace']
>>>
>>> import

可以看到,路径被成功添加进去了,再次执行导入可以正常使用。

修改 PYTHONPATH 变量

打开并编辑 ​​bashrc​​:

$ vim ~/.bashrc

将以下内容附加到文件末尾:

export PYTHONPATH=$PYTHONPATH:/home/wang/workspace

不要忘记重新加载 shell,方法是退出并重新启动,或者在命令行重新加载配置文件:

$ source ~/.bashrc # 或者 . ~/.bashrc

增加 .pth 文件

在 ​​/usr/local/lib/python3.5/site-packages​​​ 下添加一个扩展名为 ​​.pth​​​ 的配置文件(例如:​​extras.pth​​),内容为要添加的路径:

/home/wang/workspace


本文共计1155个文字,预计阅读时间需要5分钟。

如何查找Python模块的搜索路径?

简要概述:由于某些原因,在使用Python时,通过import导入模块时找不到相应的模块。此时,解释器会抛出ImportError异常。那么,Python如何知道在哪里搜索模块的路径呢?

解释说明:当Python执行import语句时,它会按照以下路径搜索模块:

1. 当前目录:首先在当前工作目录中查找模块。

2.PYTHONPATH:一个环境变量,其中包含了额外的目录路径,Python会在此列表中搜索模块。

3.安装的第三方库目录:Python会查找已安装的第三方库所在的目录。

要查看Python搜索模块的完整路径,可以使用以下方法:

python

import sysprint(sys.path)

这段代码会输出Python搜索模块的完整路径列表。通过检查这个列表,可以确定Python在何处查找模块,以及是否需要调整PYTHONPATH或更改当前工作目录。


简述

由于某些原因,在使用 ​​import​​​ 时,Python 找不到相应的模块。这时,解释器就会发牢骚 - ​​ImportError​​。

那么,Python 如何知道在哪里搜索模块的路径呢?

| 版权声明:一去、二三里,未经博主允许不得转载。

模块搜索路径

当导入名为 ​​hello​​​ 的模块时,解释器首先搜索具有该名称的内置模块。如果没有找到,将在变量 ​​sys.path​​​ 给出的目录列表中搜索名为 ​​hello.py​​ 的文件。

​​sys.path​​ 从这些位置初始化:

  • 包含输入脚本的目录(或当前目录,当没有指定文件时)
  • ​​PYTHONPATH​​​(目录名列表,与 shell 变量​​PATH​​ 语法相同)
  • 与安装相关的默认值
>>> import sys
>>> sys.path
['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/site-packages']

注意: ​​''​​ 表示当前目录(当前脚本所在的路径)

例如,在 ​​/home/wang/workspace​​​ 中创建一个名为 ​​hello.py​​ 的模块,内容如下:

如何查找Python模块的搜索路径?

print('Hello')

然后,试图加载该模块:

>>> import os
>>>
>>> os.getcwd() # 获取当前目录
'/home/wang'
>>>
>>> import hello.py
...
ImportError: No module named 'hello'

很遗憾,由于 ​​sys.path​​​ 中没有包含 ​​/home/wang/workspace​​​ 这个路径,所以找不到 ​​hello​​​ 模块,从而引发 ​​ImportError​​。

添加模块搜索路径

为了解决上述问题,需要添加模块搜索路径,可以使用以下几种方式:

  • 动态增加路径
    临时生效,对于不经常使用的模块,这通常是最好的方式,因为不必用所有次要模块的路径来污染 ​​PYTHONPATH​​。
  • 修改​​PYTHONPATH​​ 变量
    永久生效,对于在许多程序中都使用的模块,可以采用这种方式。这将改变所有 Python 应用的搜索路径,因为启动 Python 时,它会读取这个变量,甚至不同版本的 Python 都会受影响。
  • 增加​​.pth​​ 文件
    永久生效,这是最简单的、也是推荐的方式。Python 在遍历已知的库文件目录过程中,如果遇到 ​​.pth​​ 文件,便会将其中的路径加入到 ​​sys.path​​ 中,于是 ​​.pth​​ 中所指定的路径就可以被 Python 运行环境找到了。

动态增加路径

通过 ​​sys​​​ 模块的 ​​append()​​​ 方法在 ​​Python​​ 环境中增加搜索路径:

>>> import sys
>>> sys.path.append('/home/wang/workspace')

现在,查看搜索路径:

>>> sys.path
['', '/usr/local/lib/python35.zip', '/usr/local/lib/python3.5', '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/site-packages', '/home/wang/workspace']
>>>
>>> import

可以看到,路径被成功添加进去了,再次执行导入可以正常使用。

修改 PYTHONPATH 变量

打开并编辑 ​​bashrc​​:

$ vim ~/.bashrc

将以下内容附加到文件末尾:

export PYTHONPATH=$PYTHONPATH:/home/wang/workspace

不要忘记重新加载 shell,方法是退出并重新启动,或者在命令行重新加载配置文件:

$ source ~/.bashrc # 或者 . ~/.bashrc

增加 .pth 文件

在 ​​/usr/local/lib/python3.5/site-packages​​​ 下添加一个扩展名为 ​​.pth​​​ 的配置文件(例如:​​extras.pth​​),内容为要添加的路径:

/home/wang/workspace