2017-07-25 23 views
0

运行python文件作为一个作为脚本执行的模块与仅运行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它说,它无法找到该模块我已经写了。为什么是这样?这是否与路径有关?

+0

请包括一个文件的一个最小的例子,一个方向运行,但不是另一个。 – DyZ

回答

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

希望这是你想要的。

相关问题