当 apt 安装的软件包也存在时,使用 pip3 安装的 python 3 软件包?

nau*_*101 6 package-management python apt pip

我在/usr/lib/python3/dist-packages(通过apt)中安装了numpy 1.8.2,在/usr/local/lib/python3.4/dist-packages(通过点)。两个路径都在 sys.path 中(按这个顺序),但只有旧的 apt 版本在 python3 中被导入。

?  ~  sudo pip3 install --upgrade numpy
[sudo] password for naught101: 
Real name of requirement numpy is numpy
Requirement already up-to-date: numpy in /usr/local/lib/python3.4/dist-packages
Cleaning up...
?  ~  ipython3
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
Type "copyright", "credits" or "license" for more information.

IPython 1.2.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import numpy

In [2]: numpy.version
Out[2]: <module 'numpy.version' from '/usr/lib/python3/dist-packages/numpy/version.py'>

In [3]: 
KeyboardInterrupt

In [3]: numpy.version.version
Out[3]: '1.8.2'

In [5]: import sys

In [6]: sys.path
Out[6]: 
['',
 '/usr/local/bin',
 '/usr/lib/python3/dist-packages',
 '/usr/lib/python3.4',
 '/usr/lib/python3.4/plat-x86_64-linux-gnu',
 '/usr/lib/python3.4/lib-dynload',
 '/usr/local/lib/python3.4/dist-packages',
 '/usr/lib/python3.4/dist-packages',
 '/usr/lib/python3/dist-packages/IPython/extensions']
Run Code Online (Sandbox Code Playgroud)

(python3 在这里与 ipython3 做同样的事情)

如何让python3使用较新的版本?

我不能只卸载 apt 版本,因为其他软件包依赖于它。

小智 3

这篇博文很好地解释了这背后的代码逻辑:How does python find packages?

引用它:

正如文档所解释的, sys.path 使用当前工作目录填充,后跟 PYTHONPATH 环境变量中列出的目录,然后是依赖于安装的默认路径,这些路径由 site 模块控制。