Python 模块搜索路径

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

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

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

模块搜索路径

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

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

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

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

然后,试图加载该模块:

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

添加模块搜索路径

要解决上述问题,您需要添加一个模块搜索路径,可以通过以下方式使用:

[En]

To solve the above problems, you need to add a module search path, which can be used in the following ways:

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

动态增加路径

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

现在,查看搜索路径:

如您所见,该路径已成功添加,可以用于再次执行导入。

[En]

As you can see, the path has been successfully added, and it can be used to perform the import again.

修改 PYTHONPATH 变量

打开并编辑 ​ ​bashrc​​:

在文件末尾追加以下内容:

[En]

Append the following to the end of the file:

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

增加 .pth 文件

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

Original: https://blog.51cto.com/waleon/5525597
Author: waleon
Title: Python 模块搜索路径

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/504680/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球