运行python文件作为一个作为脚本执行的模块与仅运行python之间的区别?

时间:2017-07-25 00:20:26

标签: python

将python文件作为脚本执行的模块与仅运行python文件运行之间的区别是什么?特别是,我想知道运行

之间的区别

python -m filename vs python filename.py

我正在阅读这里的文档:https://docs.python.org/3.6/using/cmdline.html但对我来说并不完全清楚。

特别是,我注意到当我运行一个文件时,我编写了导入我编写的其他模块的文件,它在我运行python -m filename时起作用,但是当我运行python filename.py时,它说它可以找不到我写的模块。为什么是这样?这与路径有关吗?

1 个答案:

答案 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

希望这就是你想要的。