由于某些原因,在使用 ​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/
转载文章受原作者版权保护。转载请注明原作者出处!