'pip install <package>'和'python -m pip install <package>'有何不同?

7
在什么情况下会使用一种方法而不是另一种方法?这两种方法都有缺点吗?
我见过这两种方法,但我不知道它们之间的区别,也找不到答案。它们的行为有区别吗?还是其中一种只是另一种的进化版本?
例如,在所有答案中都使用了 here 这两种方法。
注意:似乎还有一个非常相似的问题 here,但此问题仅涉及在使用 python -m pip install 时是否需要提供 -m,而不涉及上述两种方法之间的区别。

这个问题的答案在这里:https://dev59.com/TlkS5IYBdhLWcg3wFi4M - Thomas Kimber
2个回答

7

pip install ... 调用的是 pip 可执行文件,该文件需要在您的路径上。 python -m pip ... 调用 与此 Python 安装相对应的 pip 应用程序(即 Python 将使用其正常导入机制来解析 pip 包)。

通常这两种方法是相同的,但想一想在执行了 alias pip=echo 命令后会发生什么;python -m pip ... 方法仍然可以工作。

例如,在虚拟环境中,如果您想将软件包安装到另一个 Python 安装中,则可以使用 python -m pip ... 方法:

(somevenv) $ pip install ...   # installs into 'somevenv'
(somevenv) $ /path/to/othervenv/bin/python -m pip install ...  # installs into 'othervenv'

最终,python -m pip ... 始终会使用“正确”的 Python 安装,假设你想要使用 python 指向的内容。

如果您想要在运行脚本时安装发行版,那么根据 pip 文档,也应该使用 python -m pip 方法。


0
如果你同时拥有Python的Scripts目录和Python的主目录,例如以下目录:
c:\Program Files\Python38\Scripts\
c:\Program Files\Python38\

如果你的PATH变量中已经包含了这两个路径(第一个是pip可执行文件的路径,第二个是python可执行文件的路径),那么两者都已经准备好了。
pip install [options] <package>
python -m pip install [options] <package>

将执行相同的代码,所以看起来它们是完全等价的。但是有一个(且仅有一个)例外 - 如果你想要升级pip本身

在这种情况下,你必须启动python,因为相反的情况下(直接启动pip),正在运行的pip无法重写自身:

python -m pip install --upgrade pip    ;; correct, will upgrade
pip install --upgrade pip              ;; incorrect, will NOT upgrade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接