如果import语句只包含文件名,python如何找到模块文件?

Asc*_*iom 51 python python-module python-import pythonpath

无处不在,我看到Python代码使用import sys或导入模块import mymodule

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

dm0*_*514 58

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模块的文档.


rep*_*cus 24

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

import sys
print(sys.path)
Run Code Online (Sandbox Code Playgroud)


Sil*_*Ray 8

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