70

我到处都看到 Python 代码使用import sys或导入模块import mymodule

如果没有提供目录或路径,解释器如何找到正确的文件?

4

4 回答 4

70

http://docs.python.org/3/tutorial/modules.html#the-module-search-path

6.1.2. 模块搜索路径

spam导入一个名为的模块时,解释器首先搜索具有该名称的内置模块。spam.py如果没有找到,它会在由变量 给定的目录列表中搜索一个文件sys.pathsys.path从这些位置初始化:

  • 包含输入脚本的目录(或未指定文件时的当前目录)。
  • PYTHONPATH(目录名称列表,与 shell 变量的语法相同PATH)。
  • 安装相关的默认值。

注意:在支持符号链接的文件系统上,包含输入脚本的目录是在跟随符号链接之后计算的。换句话说,包含符号链接的目录不会添加到模块搜索路径中。

初始化后,Python 程序可以修改sys.path. 包含正在运行的脚本的目录位于搜索路径的开头,位于标准库路径之前。这意味着将加载该目录中的脚本,而不是库目录中的同名模块。除非打算更换,否则这是一个错误。有关详细信息,请参阅标准模块部分。

有关“特定于安装的默认设置”的信息,请参阅模块site文档

于 2013-03-06T15:58:30.823 回答
27

sys此外,您可以使用模块查看当前路径是什么

import sys
print(sys.path)
于 2013-03-06T15:59:19.850 回答
9

它使用设置为环境变量的PYTHONPATH__init__.py来查找包(包含文件的文件夹)和模块(或者,如果已经加载过一次,则从 检索模块对象sys.modules)。

于 2013-03-06T15:58:11.157 回答
1

Python 有一个路径变量,就像您在终端中的那个变量一样。Python 在该路径内的文件夹或程序所在的文件夹中查找模块。

于 2013-03-06T15:58:03.503 回答