Python 2 和 Python 3 中 sys.path 中的导入顺序和路径

And*_*bis 5 python ubuntu python-2.7 python-3.4

我有一个关于sys.pathPython 2 和 Python 3默认放置的导入顺序和路径的问题。我将sys.pathPython 2.7 和 3.4 中的默认路径PYTHONPATH设置为空。我在 Ubuntu 14.10 上。

我还通过 /usr/lib(版本 1.8.2)中的 apt-get 和本地/home/user/.local/lib(版本 1.9.2)为 Python 2 和 Python 3安装了 numpy 。

我得到以下结果:

蟒蛇 2.7

>>> print('\n'.join(sys.path))

/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-dynload
/home/user/.local/lib/python2.7/site-packages
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
/usr/lib/pymodules/python2.7

>>> import numpy
>>> numpy.version 
<module 'numpy.version' from  /home/user/.local/lib/python2.7/site-packages/numpy/version.pyc'>
>>> numpy.version.version
'1.9.2'
Run Code Online (Sandbox Code Playgroud)

蟒蛇 3.4

>>> print('\n'.join(sys.path))

/usr/lib/python3/dist-packages
/usr/lib/python3.4
/usr/lib/python3.4/plat-x86_64-linux-gnu
/usr/lib/python3.4/lib-dynload
/home/user/.local/lib/python3.4/site-packages
/usr/local/lib/python3.4/dist-packages

>>> import numpy
>>> numpy.version 
<module 'numpy.version' from '/usr/lib/python3/dist-packages/numpy/version.py'>
>>> numpy.version.version
'1.8.2'
Run Code Online (Sandbox Code Playgroud)

您能帮我理解为什么在 Python 3/usr/lib/python3/dist-packages中高于/home/user/.local/lib/python3.4/site-packages导致默认情况下导入我的旧系统安装 numpy 的原因,而在 Python 2 中则相反吗?

Eth*_*man 1

我很确定这是 ubuntu 的事情,而不是 Python 的事情。检查全局站点自定义(在/etc/python2.7和 中/etc/python3.4)以及和 中site.py的文件。/usr/lib/python2.7/usr/lib/python3.4