【问题标题】:Difference between `python file.py` and `python -m file``python file.py` 和 `python -m file` 的区别
【发布时间】:2020-01-14 22:47:25
【问题描述】:
在python3中:
我对在这些问题上找到的信息如此之少感到惊讶。也许我没有使用正确的术语进行搜索?提前致谢!
【问题讨论】:
标签:
python
python-3.x
python-module
【解决方案1】:
调用 python path/to/file.py 和 python -m path.to.file 有什么区别?
Python -m module_name 是调用特定模块的快捷方式。通常这是一个已安装的包,其中包含一个 __main__.py 模块。 (例如 python -m pip 调用 pip/__main__.py
所以python -m pip 等价于python path/to/my/python/lib/site-packages/pip/__main__.py
它如何影响工作目录? ( os.getcwd() )
没有
它是否与位于 path/to 中的 init.py 文件的存在/不存在相关联?
首先:可能有一些值得澄清的混淆:python -m 没有将路径作为参数。它需要一个模块的名称来执行。
所以,简短的回答:不。
长答案:python -m 的名称如何执行模块取决于它是否是一个包。 __init__.py 的存在可以表示该目录是一个包的名称,就像 pip 一样,因此它会在包内部寻找__main__。
【解决方案2】:
python -m ...
用于运行python库模块,如pip、IPython等
python file.py
然而用于使用 python 解释器运行文件。