有什么区别
python -m path.to.file
和
python path/to/file.py
当执行 python 文件时?
最佳答案
区别在于查找脚本的位置。操作系统往往具有一组可找到可执行程序的路径(例如,PATH
)和一组不同的可找到动态库的目录(例如,LIB
)。这个想法是许多程序可以使用相同的库,而不管可执行文件在哪里。
python也是一样的。您执行一个始终称为 "__main__"
的顶级脚本,python 将在不同的地方找到您导入的包和模块,例如它的 site-packages
目录。一般的想法是将包/模块安装到这些特殊目录中,并将顶级脚本安装到 PATH
上的目录中。文件顶部的“shebang”(#!/usr/bin/env python3
) 告诉类 unix 系统如何执行脚本,文件关联告诉 Windows 如何执行。
但是还有第三种方法。您可以使用 python 的模块查找逻辑来查找模块,然后将其作为顶级脚本执行。现在您所有的程序都在 python 的特殊目录中,您不必费心将脚本放入系统 PATH
。
python path/to/file.py
将使用相对或绝对路径在本地文件系统中查找脚本并将其作为脚本运行。请注意,您需要知道路径。python -m path.to.file
将在 python 命名空间中查找模块并将其作为脚本运行。你不需要知道路径。这适用于任何已安装的模块,您不必知道它现在恰好安装在哪里。就您所知,该模块可能位于一个 zip 文件中。
关于python -m path.to.file 而不是 python path/to/file.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69137381/