对于Ubuntu系列,Debian和Linux Mint用户
多亏了Anthony的上述说明,您可以保留原始系统pip(位于/ usr / bin /和dist-packages /中)并删除手动安装的pip(位于〜/ .local /中)以解决冲突:
$ python3 -m pip uninstall pip
来自python3-pip
debian软件包的Ubuntu / Debian pip v8.1.1(16.04)(请参阅参考资料$ pip3 -V
)显示的搜索结果与最新的pip v10.0.1相同,并且可以从PyPI安装最新的模块。它具有有效的pip
命令(已在$ PATH中),以及--user
自2016年以来默认修补的nice 选项。查看pip发行说明,较新的版本主要是针对用例特定的错误修复和某些新功能,因此不是每个人都必须赶紧升级点子。无论如何,新的pip 10可以部署到Python virtualenvs。
但是,无论使用哪种pip,您的操作系统都可以通过APT快速安装常见的Python模块(包括numpy),而无需使用pip,例如:(
$ sudo apt install python3-numpy python3-scipy
具有系统依赖性)
$ sudo apt install python3-pip
(Debian修补的pip,稍旧,但是没关系)
快速apt语法提醒(请参阅man apt
有关详细信息):(
$ sudo apt update
以从最新源重新同步Ubuntu软件包索引文件)
$ apt search <python-package-name>
(对所有可用软件包进行全文搜索)
$ apt show <python-package-name>
(显示详细的软件包说明)
$ sudo apt install <python-package-name>
前缀python-
为的软件包名称适用于Python 2;并带有前缀python3-
用于Python 3(例如python3-pandas)。有成千上万个,它们在Debian和Ubuntu中进行集成测试。除非您寻求在每个用户级别(pip install --user
选件)或在virtualenv / venv中安装,否则可能会需要apt。这些系统程序包也可以从虚拟环境访问,因为如果您的环境没有给定模块的副本,则virtualenv将在使用时优雅地转而使用系统库。您自定义安装的(带有pip --user
)每用户模块~/.local/lib
也会覆盖它们。
请注意,由于这是系统范围的安装,因此您几乎不需要删除它们(需要注意OS依赖性)。这对于具有许多系统依赖性的软件包(例如,使用scipy或matplotlib)很方便,因为APT会跟踪并提供所有必需的系统库和C扩展名,而使用pip则无法保证。
实际上,对于系统范围的Python软件包(与按用户,主目录级别或更低级别的软件包相反),Ubuntu 希望使用APT软件包管理器(而不是sudo pip
)来避免破坏OS:sudo pip3
以/usr/lib/python3/dist-packages
APT存储OS的同一目录为目标敏感模块。Debian / Ubuntu的最新发行版在很大程度上依赖于Python 3,因此其预装模块由apt
且不应该更改。
因此,如果您使用pip3 install
命令,请确保它在隔离的虚拟开发环境中运行,例如virtualenv(sudo apt install python3-virtualenv
)或Python3内置(-m venv
)或在每个用户级别运行(--user
pip选项,在Ubuntu提供的默认选项中自2016年以来一直是pip),但不是系统范围的(从来没有sudo pip3
!),因为pip会干扰 APT软件包管理器的操作,并且在意外更改系统使用的python模块时可能会影响Ubuntu OS 组件。祝好运!
P. S. 以上都是针对“理想”解决方案的(Debian / Ubuntu方式)。
如果您仍然想独占使用新的pip3 v10,则有3种快速解决方法:
- 只需打开一个新的bash会话(一个新的终端选项卡,或键入
bash
)-pip3 v10可用(请参阅参考资料pip3 -V
)。debian的pip3 v8仍然安装但已损坏;要么
$ hash -d pip3 && pip3 -V
用于刷新$ PATH中的pip3路径名的命令。debian的pip3 v8仍然安装但已损坏;要么
- 该命令
$ sudo apt remove python3-pip && hash -d pip3
用于完全卸载debian的pip3 v8,以支持新的pip3 v10。
注意:--user
除非您处于virtualenv中,否则您将始终需要将标记添加到任何非debian提供的pip中!(~/.local/
自2016年起,它将python软件包部署到,默认为debian / ubuntu提供的python3-pip和python-pip)。Ubuntu / Debian并不真正支持您在virtualenv之外使用系统范围内的pip 10。永不sudo pip3
!
更多详细信息:
https : //github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100