为什么选择' pip'作为Python 3模块而不是脚本?

时间:2016-06-02 10:15:01

标签: python python-3.x ubuntu pip

我已经安装了Python 3.5附带的Lubuntu 16.04 LTS,但是使用Python 2.7作为默认的Python解释器。
两个版本都没有安装pip包。我只会使用3.5版本。所以我已经安装了pip3

$ sudo apt-get install python3-pip

然后我尝试更新pip版本(因为Ubuntu存储库有旧版本): $ pip3 install --upgrade pip3 但pip3无法找到pip3个包裹,并将此消息发送给我:

  

收集pip3
  找不到满足的版本   要求pip3(来自版本:)未找到匹配的分发   PIP3

之后,我尝试了另一个:

$ pip3 intall --upgrade pip

它从pip 8.1.1更新到pip 8.1.2

  

来自/home/trimax/.local/lib/python3.5/site-packages(python)的8.1.2   3.5)

如果我试试这个:

$ pip -V

不能工作:

  

该计划' pip'目前尚未安装。你可以安装它   输入:sudo apt-get install python-pip

但如果我试试这个:

$ python3 -m pip -V

有效:

  

来自/home/trimax/.local/lib/python3.5/site-packages(python)的8.1.2   3.5)

问题是为什么将pip作为模块运行而不是作为脚本运行?

2 个答案:

答案 0 :(得分:3)

pip3实际上是python3的pip包。由于python2和python3都可以共存,因此3.5的pip包重命名为pip3以避免冲突。 (由包管理员)。

任何软件包的升级语法是

easy_install-3.5 -U pip  

并且pipy中的包名称为 pip 。这就证明了为什么你必须提供pip作为包名称和 NOT pip3

  • pip -v不起作用,因为pip可执行文件不存在。

在某种程度上是一个相关的注释,你也可以使用下面的内容来升级pip或任何包。

{
  "mappings": {
    "series": {
      "properties": {
        "name": { "type": "string" },
        "books": {
          "type": "nested", 
          "properties": {
            "title": { "type": "string"  },
            "page_count": { "type": "integer"  }
          }
        }
      }
    }
  }
}

答案 1 :(得分:0)

PEP 394描述了Python二进制文件的命名,根据其建议,系统中有pip3,因为pip是为Python 2.x pip保留的。

当然,您可以将pip设为pip3,但不建议这样做。