PIP格式的差异

时间:2018-07-03 08:11:41

标签: python pip

之间有什么区别

python -m pip install forecasting  

pip install forecasting  

在我的环境中,当第二种格式引发以下错误时,第一种起作用:

  

ModuleNotFoundError:没有名为“ pip._internal”的模块

3 个答案:

答案 0 :(得分:1)

第一个问题的答案。

来自pip docs
pip是一个命令行程序。在安装pip时,会将pip命令添加到系统中,该命令可以从命令提示符处运行,如下所示:

$ pip <pip arguments>

如果您不能直接运行pip命令(可能是因为其安装位置不在操作系统的PATH上),则可以通过Python解释器运行pip:

$ python -m pip <pip arguments>

答案 1 :(得分:1)

有关此GitHub问题:

https://github.com/pypa/pip/issues/5373

尝试以下命令:

sudo easy_install pip

答案 2 :(得分:1)

它们是程序包向命令行公开命令的两种不同方式。

pipconsole_script entry-point。任何程序包都可以以这种方式定义全局可用的命令,然后PIP(程序包)使用它来定义pip(命令)。

对于pip,他们使用此方法执行的功能设置为pip._internal.main()

entry_points={
    "console_scripts": [
        "pip=pip._internal:main",
    ],
},

另一方面,python -m pip正在使用switch for calling modules。如果您的模块包含一个__main__.py文件,则该文件将由Python解释器简单地解释和执行。

对于python -m pipthis file essentially contains

from pip._internal import main as _main 
if __name__ == '__main__':
    sys.exit(_main())

所以这两个命令试图做同样的事情。

但是,最近PIP显示了一些奇怪的怪癖[1] [2],它们导致两者之一工作,而另一个失败。