我有两台运行Ubuntu 14.04服务器的计算机(让我们称它们为A和B)。 B最初是10.04,但已接受了两个升级:12.04和14.04。 我不明白为什么两台计算机上的Python路径不同。
正如您下面看到的两个路径所示,在Ubuntu A上,pip安装路径/usr/local/lib/python2.7/dist-packages
在apt python软件包路径/usr/lib/python2.7/dist-packages
之前,但在Ubuntu B上则相反。
如果通过apt和pip都安装了Python软件包,则会出现几个问题。 如下所示,如果同时安装了python-six
apt包和six
pip包,则它们可能是两个不同的库版本。
软件包的安装系统并不总是我的选择,但可能是安装的其他软件包的某些依赖关系。
这个问题可能可以通过virtualenv解决,但由于某些原因,我不能在这里使用virtualenv,必须在整个系统中安装pip软件包。
Ubuntu A
>>> import sys, six
>>> sys.path
['',
'/usr/local/bin',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/local/lib/python2.7/dist-packages/IPython/extensions']
>>> six
<module 'six' from '/usr/local/lib/python2.7/dist-packages/six.pyc'>
Ubuntu B
>>> import sys, six
>>> sys.path
['',
'/usr/local/bin',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/local/lib/python2.7/dist-packages/IPython/extensions']
>>> six
>>> <module 'six' from '/usr/lib/python2.7/dist-packages/six.pyc'>
对于这两台机器来说,$PATH
是相同的,而$PYTHONPATH
是空的。
为什么这些 PYTHONPATH 不同?
我该如何在“Ubuntu B”中修复 pythonpath 的顺序,以系统范围内的方式优先加载 pip 包而不是系统包?是否有一个apt包我应该重新安装或重新配置,以便 PYTHONPATH 会优先选择pip软件包?