加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python:用户站点中的包不覆盖ubuntu上的dist-packages

发布时间:2020-12-20 13:38:42 所属栏目:Python 来源:网络整理
导读:我用的是ubuntu 13.04.在 python中开发时,我有时希望使用某些软件包的新版本而不是ubuntu附带的软件包.在这些情况下,我习惯的方法是仅将软件包安装到我的用户帐户,例如像这样(对于包六): $pip install --user --upgrade six 这正确地在我的主目录中安装了六
我用的是ubuntu 13.04.在 python中开发时,我有时希望使用某些软件包的新版本而不是ubuntu附带的软件包.在这些情况下,我习惯的方法是仅将软件包安装到我的用户帐户,例如像这样(对于包六):

$pip install --user --upgrade six

这正确地在我的主目录中安装了六个最新版本(1.4.1).但是,当我加载刚刚安装的软件包时,python选择在系统范围内安装的版本:

$python -c "import six; print six; print six.__version__"                                                     
<module 'six' from '/usr/lib/python2.7/dist-packages/six.pyc'>
1.2.0

这在我看来是奇怪的行为;应首选用户手动安装的软件包.我在Arch Linux上尝试过相同的过程,首先加载用户站点包.我的sys.path:

$python -c "import sys; print sys.path"                                                                       
['','/home/jostein/.local/lib/python2.7/site-packages/enaml-0.5.1-py2.7.egg','/usr/lib/python2.7/dist-packages','/home/jostein/Programming/scikit-image','/home/jostein/Programming/reconstruct','/home/jostein/Programming/ptychography','/home/jostein/Programming','/home/jostein','/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','/home/jostein/.local/lib/python2.7/site-packages','/usr/local/lib/python2.7/dist-packages','/usr/lib/python2.7/dist-packages/PILcompat','/usr/lib/python2.7/dist-packages/gst-0.10','/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/ubuntuone-client','/usr/lib/python2.7/dist-packages/ubuntuone-control-panel','/usr/lib/python2.7/dist-packages/ubuntuone-couch','/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol','/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

/usr/lib/python2.7/dist-packages出现在与用户相关的任何内容之前,这可能是导致问题的原因.

有没有人知道在ubuntu上允许用户安装的软件包优于系统级安装的好方法?

解决方法

在用户包之前有dist包实际上有意义恕我直言.但无论如何,你有两种选择,一种是坏的,一种是正确的.

糟糕的是重新定义PYTHONPATH环境变量,以便在站点范围的包之前放置本地包的目录.这很简单,但是当系统中断时不要抱怨,因为你用一些不兼容的版本遮蔽了一个关键包.

在不破坏任何东西的情况下尝试特定版本的软件包的正确方法当然是使用virtualenv.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读