【问题标题】:Why in my Windows machine I have to write command as "py -m pip install "module-name" instead of just writing "pip install "module-name"?为什么在我的 Windows 机器上我必须将命令写为“py -m pip install”module-name”,而不是只写“pip install”module-name”?
【发布时间】:2020-10-02 03:49:31
【问题描述】:

我正在 Windows 8.1 机器上使用 python。我是一个初学者,当我想安装一个模块或查看版本时,我必须写py -m pip install module-name之类的命令,而不是只写pip install module-name。如果我必须检查 python 版本,我必须写py --version 而不是python --version。为什么我的机器会出现这种情况,原因是什么?请解释一下。

【问题讨论】:

  • 虽然我已经回答了这个问题,但您的问题可以很容易地分成两个不同的问题。首先为什么需要使用py -m pip,其次为什么不能使用python --version。我建议您研究一下这些问题是否已经存在,如果不存在,请询问他们

标签: python windows cmd pip


【解决方案1】:

Pip 本身只是一个 Python 模块,因此您可以使用 -m 标志执行 pip,如下所示:python -m pip

现在解决您的问题:

可以从控制台访问的任何命令都只是磁盘上某处的任何可执行文件。名为“PATH”的环境变量包含这些可执行文件的所有路径。 Python go 添加到这个“PATH”变量中,但 pip 模块位于不在您的“PATH”中的不同目录中。

所以你可以像这样继续运行 pip:py -m pip,这实际上与直接执行 pip 相同。否则,您可以将以下路径添加到“PATH”:

some/dir/to/your/python/installation/Scripts

Scripts 目录包含 pip 可执行文件。将目录添加到“PATH”后,只需在控制台中输入 pip 即可运行 pip。


关于pypython 使用的第二个问题,第一个是Python 3.x 引入的新工具。它或多或少取代了python 命令,可用于运行不同版本的Python:

  • py -2 将启动 Python 2.x
  • py -3 将启动 Python 3.x

不指定任何版本将默认为最新安装。 this answer 对另一个问题也有同样的说明。

【讨论】:

  • "Pip 本身只是一个 Python 模块" pip 也是一个脚本。 OP 询问为什么我们需要运行 py -m pip 而不仅仅是 pip
  • @phd,实际上在 Windows 中 pip 安装“pip.exe”而不是文本脚本。这是 pip 包中入口点脚本的便捷包装器。它包含一个嵌入脚本,用于导入和运行 pip 包的main 函数。可执行包装器从这个嵌入式脚本的 shebang 中获取“python.exe”的完全限定路径,并使用作为命令行参数传递的可执行文件本身来运行它。这依赖于 Python 的 zip 导入器来运行嵌入在可执行文件中的脚本。
  • 当前通过“pip.exe”运行不支持升级 pip - 由于“pip.exe”上的共享冲突导致升级失败。原则上,这可以通过两步升级来解决,因为即使无法删除正在运行的可执行文件,也可以对其进行重命名。但相反,建议通过py -m pip 进行升级,而不是使用“pip.exe”包装器来升级 pip。
猜你喜欢
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
相关资源
最近更新 更多