【问题标题】:Meaning of python -m flagpython -m 标志的含义
【发布时间】:2018-11-22 02:18:19
【问题描述】:

python -m pip install <package> 中的 -m 是什么意思? 或者在使用python -m pip install --upgrade pip 升级 pip 时。

【问题讨论】:

标签: python python-3.x pip


【解决方案1】:

如果你输入python --help

你得到

// More flags above
-m mod : run library module as a script (terminates option list)
// and more flags below

如果您使用command --helpman command,终端中的很多东西都会向您展示如何使用它

【讨论】:

  • 主要问题仍未得到解答,“作为脚本运行”是什么意思。
【解决方案2】:

-m 代表module-name

来自Command line and environment

python [-bBdEhiIOqsSuvVWx?] [-c 命令 | -m 模块名 |脚本 | - ] [参数]

【讨论】:

    【解决方案3】:

    来自Python Docs

    由于参数是模块名称,因此您不能提供文件扩展名 (.py)。 module-name 应该是有效的 Python 模块名称,但实现可能并不总是强制执行此操作(例如,它可能允许您使用包含连字符的名称)。

    包名也是允许的。当提供包名称而不是普通模块时,解释器将执行 <pkg>.__main__ 作为主模块。这种行为故意类似于处理作为脚本参数传递给解释器的目录和 zip 文件。

    【讨论】:

    • 所以这只是将python脚本作为普通可执行文件运行?我不明白什么时候会使用-m 标志。我的脚本在没有它的情况下运行它们总是有效的。
    【解决方案4】:

    -m 在命令行中与python 语句一起使用时,后跟<module_name>,则它使模块能够作为可执行文件执行。

    你可以参考python文档,或者运行python --help

    【讨论】:

    • 所以这只是将python脚本作为普通可执行文件运行?我不明白什么时候会使用 -m 标志。我的脚本在没有它的情况下运行它们总是有效的。
    【解决方案5】:

    如果你安装了多个版本的python并且你想升级pippip install --upgrade pip你怎么知道哪个python版本会受到影响?它取决于 shell 的路径变量。在这种情况下,您可能还会收到警告。为避免这种混淆,请使用-m,然后它会查看变量sys.path。这是-m 的另一个优势。

    # importing module
    import sys
      
    # printing all directories for 
    # interpreter to search
    sys.path
    

    【讨论】:

      【解决方案6】:

      考虑以下场景。

      您安装了三个版本的 Python:

      • Python 3.7
      • Python 3.8
      • Python 3.9

      您的“默认”版本是 3.8。它是您的path 中出现的第一个。因此,当您在 shell 中键入 python3(Linux 或 Mac)或 python(Windows)时,您将启动 3.8 解释器,因为这是遍历路径时找到的第一个 Python 可执行文件。

      假设您正在开始一个新项目,您想在其中使用 Python 3.9。您创建一个名为 .venv 的虚拟环境并激活它。

      python3.9 -m venv .venv         # "py -3.9" on Windows
      
      source .venv/bin/activate    # ".venv\Scripts\activate" on Windows 
      

      我们现在使用 Python 3.9 激活了虚拟环境。在 shell 中键入 python 会启动 3.9 解释器。

      但是,如果你输入

      pip install <some-package>
      

      那么pip用的是什么版本的呢?它是默认版本(即 Python 3.8)的 pip,还是虚拟环境中的 Python 版本?

      解决这种歧义的简单方法就是使用

      python -m pip install <some-package>
      

      -m 标志确保您使用的是与活动 Python 可执行文件绑定的 pip。

      始终使用-m 是一种很好的做法,即使您只安装了一个用于创建虚拟环境的全局 Python 版本。

      回复。路径

      所谓的path 是系统搜索可执行文件的目录列表。当您键入命令时,例如python,此列表会从第一个目录遍历到最后一个目录,搜索与您键入的命令匹配的文件名。

      如果找到文件名/命令,则执行匹配的文件,而不考虑以后可能的匹配。如果未发生匹配,您将获得 Command not found 或其变体。此行为是设计使然。

      在 UNIX 系统上,路径环境变量称为 $PATH,而在 Windows 系统上则称为 %PATH%

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-28
        • 1970-01-01
        • 1970-01-01
        • 2011-02-19
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        • 2013-05-12
        相关资源
        最近更新 更多