python -m path.to.file 而不是 python path/to/file.py

标签 python

有什么区别

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/

相关文章:

python - tweepy流到sqlite数据库-语法错误

python - LOAD DATA LOCAL INFILE sqlalchemy 和 python 到 mysql 数据库

python - 是否可以通过 django 测试客户端中的 post 请求传递 request.body?

python - sklearn : Turning off warnings

python - python 中 int(x) 的奇怪行为

python - 无法更新标签文本

python - 将元数据添加到现有的 python 对象

python - 用于大型(r)数据集的 Pandas

python - 在每个 pandas 数据框行中查找最高值列的名称——包括绑定(bind)值

python - 如何提高 Excel 中 xlwings UDF 的速度?