python中sys路径_如何在Python中添加sys.path的路径?

问题描述:

使用pip,我升级到最新版本的requests(版本2.7.0,pip显示请求给位置/usr/local/lib/python2.7/dist-packages)。当我在交互式命令行中导入请求和打印请求.__ version__时,我看到的是2.2.1版本。原来,Python正在使用预先安装的Ubuntu版本的请求(请求.__文件是/usr/lib/python2.7/dist-packages/requests/__init__.pyc – not / user / local / lib / .. )。

从我的调查中,这个事实是由Ubuntu对Python搜索路径的改变引起的(我运行Ubuntu 14.04),前提是Ubuntu的Python包的路径(对于我的机器,这发生在usr / local / lib / python2.7 / dist-包/易install.pth)。在我的情况下,这将导致apt-get版本的请求,这是使用Ubuntu预先打包的,而不是我想使用的pip版本。

我正在寻找:

我想在Ubuntu的Python安装目录路径之前,全球预先将pip的安装目录路径添加到Python的搜索路径(sys.path)中。由于我的许多Python脚本中都使用了请求(和许多其他软件包),因此我不想手动更改机器上每个文件的搜索路径。

不满意的解决方案1:使用virtualenv

使用virtualenv将会对我的机器造成不必要的更改,因为我必须重新安装全球存在的每个包。我只想从Ubuntu的软件包升级到pip软件包。

不满意的解决方案2:改变easy-install.pth

由于easy-install.pth每次使用easy-install都会被覆盖,所以如果安装了一个新软件包,那么我对easy-install.pth的更改将被删除。这个问题使得我的机器上的包装很难维护。

不满意(但最好的一个我到目前为止)解决方案3:添加单独的.pth文件

在与easy-install.pth相同的目录中,我添加了一个包含内容的zzz.pth:

import sys; sys.__plen = len(sys.path)

/usr/lib/python2.7/dist-packages/test_dir

import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)

当Python开始时,该文件由site.py读取。由于其文件名以easy-install.pth字母数字的形式出现,所以后来由site.py消耗。总而言之,文件的第一行和最后一行前面加上sys.path的路径(这些行来自easy-install.pth)。

我不喜欢这个解决方案取决于文件名的字母数字顺序来正确放置新的路径。

PYTHONPATHs来自Ubuntu的路径

Stack Overflow上的Another answer对我来说没有效果。我的PYTHONPATH路径来自easy-install.pth中的路径,它使用我在“不满意的解决方案3”中提到的相同的代码来添加其路径。

先谢谢你!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值