我到处都看到 Python 代码使用import sys
或导入模块import mymodule
如果没有提供目录或路径,解释器如何找到正确的文件?
我到处都看到 Python 代码使用import sys
或导入模块import mymodule
如果没有提供目录或路径,解释器如何找到正确的文件?
http://docs.python.org/3/tutorial/modules.html#the-module-search-path
6.1.2. 模块搜索路径
当
spam
导入一个名为的模块时,解释器首先搜索具有该名称的内置模块。spam.py
如果没有找到,它会在由变量 给定的目录列表中搜索一个文件sys.path
。sys.path
从这些位置初始化:
- 包含输入脚本的目录(或未指定文件时的当前目录)。
PYTHONPATH
(目录名称列表,与 shell 变量的语法相同PATH
)。- 安装相关的默认值。
注意:在支持符号链接的文件系统上,包含输入脚本的目录是在跟随符号链接之后计算的。换句话说,包含符号链接的目录不会添加到模块搜索路径中。
初始化后,Python 程序可以修改
sys.path
. 包含正在运行的脚本的目录位于搜索路径的开头,位于标准库路径之前。这意味着将加载该目录中的脚本,而不是库目录中的同名模块。除非打算更换,否则这是一个错误。有关详细信息,请参阅标准模块部分。
有关“特定于安装的默认设置”的信息,请参阅模块site
文档。
sys
此外,您可以使用模块查看当前路径是什么
import sys
print(sys.path)
它使用设置为环境变量的PYTHONPATH__init__.py
来查找包(包含文件的文件夹)和模块(或者,如果已经加载过一次,则从 检索模块对象sys.modules
)。
Python 有一个路径变量,就像您在终端中的那个变量一样。Python 在该路径内的文件夹或程序所在的文件夹中查找模块。