【问题标题】:Difference between `python file.py` and `python -m file``python file.py` 和 `python -m file` 的区别
【发布时间】:2020-01-14 22:47:25
【问题描述】:

在python3中:

  • 调用python path/to/file.pypython -m path.to.file?

  • 它如何影响工作目录? (os.getcwd())

  • 它是否与__init__.py 的存在/不存在相关联 位于path/to 的文件?

我对在这些问题上找到的信息如此之少感到惊讶。也许我没有使用正确的术语进行搜索?提前致谢!

【问题讨论】:

    标签: 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 解释器运行文件。

      【讨论】:

        猜你喜欢
        • 2014-10-05
        • 2020-12-06
        • 2020-10-20
        • 1970-01-01
        • 2020-01-18
        • 1970-01-01
        相关资源
        最近更新 更多