【发布时间】:2015-07-31 14:54:57
【问题描述】:
我似乎不再能够升级已安装在 Ubuntu 15.04 中的软件包。 Pip 仍然有效,将包安装到/usr/local/python2.7/dist-packages,但路径在顶部列出了/usr/python2.7/dist-packages,甚至PYTHONPATH 也无法在该行之上获得任何东西。我相信这适用于较旧的 Ubuntu。我一直试图在/usr/python/site.py 中找到一些东西,但它似乎做对了。添加-S 似乎确实阻止了非本地版本位于顶部。我相信我在两台电脑上看到过这个。
需要这样做的一些示例:更新以获得所需的功能/错误修复(在我的情况下为 PILLOW),而无需 APT 卸载将该软件包列为要求的一堆软件包。
编辑: 为了澄清,问题是:我想重新排序目录搜索顺序以恢复 Ubuntu 14.10 行为。在许多系统上有更好的方法可以做到这一点,但我想使用内置的 apt 包装,只使用一两个(潜在的)较新的包,如 IPython 等,而不是使用 virtual-env 和 Anacoda(两者我在其他系统上使用)。看起来我想要的行为是记录在案的 Debian 行为,所以我不确定它为什么要重新排序路径。
这里是演示问题的路径,注意PYTHONPATH变量在中间,有两个git文件夹:
>>> sys.path
['',
'/usr/lib/python2.7/dist-packages',
'/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/octave_kernel-0.10.0-py2.7.egg',
'/home/username/git/maya',
'/home/username/git/udaq/pyUDAQ',
'/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/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
作为参考,我有一个运行 14.04 的匹配系统,它具有完全预期的行为。两个PYTHONPATH 目录首先出现,然后是本地dist-packages 在内置之上。
【问题讨论】:
-
我认为让
pip和apt争夺包裹是一个非常糟糕的主意。一个更简洁的方法是改用virtualenvs。 -
我希望能够将我的计算机交给遵循指示但不太了解的人。告诉他“ipython notebook”比告诉他先激活一个虚拟环境更容易。不过,这通常是个好主意。
-
在这种情况下:切换到
anaconda并将软件包安装到根环境中。那么conda和pip现在是你的包管理器,apt不会干扰。
标签: python python-2.7 ubuntu pip