将python文件作为脚本执行的模块与仅运行python文件运行之间的区别是什么?特别是,我想知道运行
之间的区别 python -m filename
vs
python filename.py
我正在阅读这里的文档:https://docs.python.org/3.6/using/cmdline.html但对我来说并不完全清楚。
特别是,我注意到当我运行一个文件时,我编写了导入我编写的其他模块的文件,它在我运行python -m filename
时起作用,但是当我运行python filename.py
时,它说它可以找不到我写的模块。为什么是这样?这与路径有关吗?
答案 0 :(得分:1)
我不是蟒蛇人,但我在你提供的链接中读到了一些可能提供一些解释的内容。
如果给出此选项,则sys.argv的第一个元素将是 模块文件的完整路径(在找到模块文件时, 第一个元素将设置为“-m”)。与-c选项一样, 当前目录将添加到sys.path的开头。
我想这意味着您运行的目录python -m filename
被添加到系统路径中。 sys.path
(或系统路径)基本上是一个路径(文件夹)列表,python将尝试搜索您尝试导入的文件。我假设您导入的文件位于运行python -m filename
的同一文件夹中。不使用-m运行python不会修改sys.path列表。
您可以在此处详细了解https://docs.python.org/3.6/library/sys.html#sys.path
希望这就是你想要的。