“pip install <package>”和“python -m pip install <package>”有什么区别?

Pet*_*rdt 7 python pip

在什么情况下人们会使用一种方法而不是另一种方法?这两种方法都有缺点吗?

我看过这两种方法,但我不知道两者之间有什么区别,而且我似乎找不到这个问题的答案。行为上有差异吗?或者其中一个只是另一个的进化版本?

例如,这里所有答案中都使用了两种方法。

注意:这里似乎还有一个非常相似的问题,但是这个问题只涉及-m使用时提供的必要性python -m pip install <package>,而不涉及上述两种方法之间的差异。

a_g*_*est 7

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

通常这两种方法是相同的,但想想之后会发生什么alias pip=echo;这种python -m pip ...方法仍然有效。

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

(somevenv) $ pip install ...   # installs into 'somevenv'
(somevenv) $ /path/to/othervenv/bin/python -m pip install ...  # installs into 'othervenv'
Run Code Online (Sandbox Code Playgroud)

最后,python -m pip ...假设您打算使用指向的任何python内容,则始终会使用“正确”的 Python 安装。

如果您想从正在运行的脚本中安装发行版,python -m pip那么根据pip 文档,使用该方法也是首选方法。