<h2>对于Ubuntu家族、Debian、Linux Mint用户</h2>
<p>由于Anthony的解释<a href="https://stackoverflow.com/a/49836753/9575715">above</a>,您可以保留原来的系统pip(in/usr/bin/和dist packages/)并删除手动安装的pip(in~/.local/)以解决冲突:</p>
<p><code>$ python3 -m pip uninstall pip</code></p>
<p>来自<code>python3-pip</code>Debian包的Ubuntu/Debian pip v8.1.1(16.04)显示了与最新pip v10.0.1相同的搜索结果,并且很好地安装了来自PyPI的最新模块。它有一个工作的<code>pip</code>命令(已经在$PATH中),加上自2016年以来默认修补的nice <code>--user</code>选项。从<a href="https://pip.pypa.io/en/stable/news/" rel="noreferrer">pip release notes</a>来看,较新的版本主要是关于特定于用例的bug修复和某些新特性的,因此<em>不是</em>每个人都必须立即升级pip。无论如何,新的pip 10可以部署到Python virtualenvs。</p>
<p>但是,不管pip是什么,您的操作系统都允许使用APT快速安装公共Python模块(包括numpy),而不需要pip,例如:<br/>
<code>$ sudo apt install python3-numpy python3-scipy</code>(与系统相关)<br/>
<code>$ sudo apt install python3-pip</code>(Debian补丁pip,稍旧,但无所谓)</p>
<blockquote>
<p>Quick apt syntax reminder (please see <code>man apt</code> for details):<br/>
<code>$ sudo apt update</code> (to resync Ubuntu package index files from up-to-date sources)<br/>
<code>$ apt search <python-package-name></code> (full text-search on all available packages)<br/>
<code>$ apt show <python-package-name></code> (displays the detailed package description)<br/>
<code>$ sudo apt install <python-package-name></code></p>
</blockquote>
<p>前缀为<code>python-</code>的包名称适用于Python 2;前缀为<code>python3-</code>的包名称适用于python3(例如python3 pandas)。有数千个,他们在Debian和Ubuntu中进行集成测试。除非您试图在每个用户级别(<code>pip install --user</code>选项)或在virtualenv/venv中安装,否则apt可能是您所需要的。这些系统包也可以从虚拟环境中访问,因为如果您的环境没有提供模块的副本,那么<a href="https://virtualenv.pypa.io/en/latest/" rel="noreferrer">virtualenv</a>将优雅地返回到在导入时使用系统libs。
您在<code>~/.local/lib</code>中为每个用户模块安装的自定义(使用pip<code>--user</code>)也将覆盖它们。</p>
<p>注意,由于这是一个<a href="https://askubuntu.com/questions/95037/what-is-the-best-way-to-install-python-packages/116645#116645">system-wide</a>安装,您很少需要删除它们(需要注意操作系统依赖性)。这对于具有许多系统依赖项的包(例如使用scipy或matplotlib)很方便,因为APT将跟踪并提供所有必需的系统lib和C扩展,而使用pip则可以获得<a href="http://matthew-brett.github.io/pydagogue/installing_on_debian.html" rel="noreferrer">no such guarantees</a>。</p>
<p>事实上,对于系统范围内的Python包(与每个用户、home dir级别或更低级别相反),Ubuntu <a href="https://askubuntu.com/a/116645">expects</a>使用APT包管理器(而不是<code>sudo pip</code>)来避免破坏OS:<code>sudo pip3</code>目标与APT存储OS敏感模块的<code>/usr/lib/python3/dist-packages</code>目录完全相同。最近的Debian/Ubuntu版本在很大程度上依赖于Python 3,因此它的预装模块由<code>apt</code>管理,不应该更改。</p>
<p>因此,如果您使用<code>pip3 install</code>命令,请确保它在一个独立的虚拟开发环境中运行,比如使用<a href="http://docs.python-guide.org/en/latest/dev/virtualenvs/#lower-level-virtualenv" rel="noreferrer">virtualenv</a>(<code>sudo apt install python3-virtualenv</code>),或者使用Python3内置(<code>-m venv</code>),或者在每个用户级别(<code>--user</code>pip选项,自2016年以来在Ubuntu提供的pip中是默认的),但是系统范围内的<em>不是</em>(永远不要使用<code>sudo pip3</code>!),因为pip <a href="https://askubuntu.com/a/116645">interferes</a>具有APT包管理器的操作,并且在意外更改系统使用的python模块时可能会影响Ubuntu OS <a href="https://ubuntuforums.org/showthread.php?t=2379169&p=13719476#post13719476" rel="noreferrer">components</a>。祝你好运!</p>
<hr/>
<p><strong>p.</strong><strong>S.</strong>以上都是“理想”解决方案(Debian/Ubuntu方式)。</p>
<p>如果您仍想独占使用新的pip3 v10,有3个快速解决方法:</p>
<ul>
<li>只要打开一个新的bash会话(一个新的终端选项卡,或者键入<code>bash</code>),pip3 v10就可用了(请参见<code>pip3 -V</code>)。debian的pip3 v8仍在安装,但已损坏;或</li>
<li>命令<code>$ hash -d pip3 && pip3 -V</code>刷新$PATH中的pip3路径名。debian的pip3 v8仍在安装,但已损坏;或</li>
<li>命令<code>$ sudo apt remove python3-pip && hash -d pip3</code>完全卸载debian的pip3 v8,以支持新的pip3 v10。</li>
</ul>
<p><strong>注意:</strong>除非您在virtualenv中,否则始终需要向任何非debian提供的pip添加<code>--user</code>标志!(它将python包部署到<code>~/.local/</code>,这是自2016年以来debian/ubuntu提供的python3 pip和pythonpip中的默认设置)。Ubuntu/Debian并不真正支持在virtualenv之外的系统范围内使用pip 10。永远不要<code>sudo pip3</code>!</p>
<p>F型其他详细信息:<br/>
<a href="https://github.com/pypa/pip/issues/5221#issuecomment-382069604" rel="noreferrer">https://github.com/pypa/pip/issues/5221#issuecomment-382069604</a><br/>
<a href="https://github.com/pypa/pip/issues/5240#issuecomment-381673100" rel="noreferrer">https://github.com/pypa/pip/issues/5240#issuecomment-381673100</a></p>