pip3与python3 -m pip与python3.7 -m pip

时间:2020-03-22 15:08:31

标签: python pip package

在我的系统(Linux Mint)上,我有ptyhon2python3.6python3.7

muyustan@mint:/usr/lib$ pip -V

Command 'pip' not found, but can be installed with:

sudo apt install python-pip

muyustan@mint:/usr/lib$ pip3 -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
muyustan@mint:/usr/lib$ python3 -m pip -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
muyustan@mint:/usr/lib$ python3.7 -m pip -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.7)
muyustan@mint:/usr/lib$ 

从这些内容中,我了解到pip是为python2保留的,并且尚未安装。没问题,因为我不在乎python2

似乎pippython3.6分别有两个不同的python3.7

但是,当我检查文件夹/usr/lib/python3/dist-packages时,发现文件夹pip不超过一个。

muyustan@mint:/usr/lib$ ll /usr/lib/python3/dist-packages | grep "pip"
drwxr-xr-x 11 root root   4096 Mar 21 15:24 pip/
drwxr-xr-x  2 root root   4096 Mar 21 15:24 pip-9.0.1.egg-info/

我对pip3python3 -m pippython3.7 -m pip感到困惑。

我假设python3是指python3.6

我的问题是

  1. 我有3个不同的pip吗?
  2. 我应该使用哪个?
  3. pippython3.6之间的实际差异是多少 python3.7

1 个答案:

答案 0 :(得分:4)

对于该主题,我目前所知的最佳参考文献是Brett Cannon's article "Why you should use python -m pip"

简而言之:

  • 永远不要安装 pip
  • 代替创建虚拟环境,它们预先安装了 pip ,可用于在此虚拟环境中专门安装Python项目,而且此 pip 可以安全升级
  • 请勿直接使用任何pippip3pip3.7脚本(永远,除非您100%确信它与正确的Python解释器相关联)
  • 代替使用 pip 可执行模块
    • path/to/venv/bin/python -m pip somecommand ...
    • path\to\venv\Scripts\python.exe -m pip somecommand ...
    • (这对其他工具也有效:path/to/venv/bin/python -m pytest
    • (在 bash 脚本, tox 配置,文档等文件中更是如此;诸如pip之类的快捷方式供交互式命令行使用仅)
    • (使用显式路径还可以使用 pip 或其他工具,而无需激活虚拟环境)