【问题标题】:pip3 vs python3 -m pip vs python3.7 -m pippip3 vs python3 -m pip vs python3.7 -m pip
【发布时间】:2020-03-23 19:43:23
【问题描述】:

在我的系统(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

看起来有两个不同的pips,分别是python3.6python3.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/

我对@9​​87654334@、python3 -m pippython3.7 -m pip 感到很困惑。

我假设python3 指的是python3.6

所以我的问题是,

  1. 我有 3 个不同的 pips 吗?
  2. 我应该使用哪一个?
  3. pippython3.6python3.7?

【问题讨论】:

  • 我会安装你自己的 Python 版本。系统往往缺乏核心功能,如果它坏了,你的操作系统就会坏。
  • 我应该使用哪一个?我同意 Simon 的观点,并补充说我推荐使用虚拟环境。
  • 在这种情况下,就可以使用它。远离预装的
  • @Simon 那么,当我想安装一个包时,我应该怎么做?由python3.7 -m pip install xxxxxxx ?
  • 可以使用现有的 python,但要避免与它们一起使用 pip。如果你坚持使用为你的系统打包的 python 模块,你可能没有最新版本的模块,但它会与现有的包集成。我没有听从自己的建议,很可能会在我的发行版的下一个主要版本上擦除我的机器并重新安装。

标签: python pip package


【解决方案1】:

对于这个话题,目前我所知道的最好的参考是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 或其他此类工具,而无需激活虚拟环境)

【讨论】:

  • 经过一番研究,我必须说这个问题太复杂了,应该采用这种方法,而不是坚持了解这种混乱背后的整个故事。
  • @muyustan 复杂性主要来自大量善意但略带误导性的建议,这些建议随处可见(在我看来)。
猜你喜欢
  • 1970-01-01
  • 2019-11-18
  • 2017-05-09
  • 2020-08-03
  • 2023-03-29
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 2017-03-16
相关资源
最近更新 更多