首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装IMAPClient时“必需的分发版本不可用”

安装IMAPClient时“必需的分发版本不可用”
EN

Ask Ubuntu用户
提问于 2012-01-14 00:42:25
回答 2查看 1.1K关注 0票数 3

当我运行命令"easy_install imapclient“时,会收到以下错误:

代码语言:javascript
复制
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package distribute
root@localhost:/var/www/somedir# easy_install imapclient
install_dir /usr/local/lib/python2.6/dist-packages/
Searching for imapclient
Reading http://pypi.python.org/simple/imapclient/
Reading http://freshfoo.com/wiki/CodeIndex
Reading http://imapclient.freshfoo.com/
Best match: IMAPClient 0.8.1
Downloading http://freshfoo.com/projects/IMAPClient/IMAPClient-0.8.1.zip
Processing IMAPClient-0.8.1.zip
Running IMAPClient-0.8.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-BmlBbm/IMAPClient-0.8.1/egg-dist-tmp-5OVaNN
The required version of distribute (>=0.6.24) is not available,
and can't be installed while this script is running. Please
install a more recent version first, using
'easy_install -U distribute'.

(Currently using distribute 0.6.14 (/usr/lib/python2.6/dist-packages))
error: Setup script exited with 2

对是什么原因有什么想法吗?

我尝试按照上面的输出中的建议运行"easy_install -U distribute“,该输出返回以下输出:

代码语言:javascript
复制
install_dir /usr/local/lib/python2.6/dist-packages/
Searching for distribute
Reading http://pypi.python.org/simple/distribute/
Reading http://packages.python.org/distribute
Best match: distribute 0.6.24
Processing distribute-0.6.24-py2.6.egg
distribute 0.6.24 is already the active version in easy-install.pth
Installing easy_install script to /usr/local/bin
Installing easy_install-2.6 script to /usr/local/bin

Using /usr/local/lib/python2.6/dist-packages/distribute-0.6.24-py2.6.egg
Processing dependencies for distribute
Finished processing dependencies for distribute

我正在运行Ubuntu10.04 64位服务器,如果有帮助的话。

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2012-05-30 08:05:18

我肯定这不是正确的方法,但它对我有效。我修改了/usr/bin/easy脚本,并删除了分发的version约束,所以现在看起来如下:

代码语言:javascript
复制
#! /usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'distribute','console_scripts','easy_install'
__requires__ = 'distribute'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('distribute', 'console_scripts', 'easy_install')()
    )
票数 2
EN

Ask Ubuntu用户

发布于 2012-07-10 21:44:48

我在相同版本的Ubuntu上也有同样的问题(但是32位而不是64位)。

问题是,我们的旧版本的pip和easy_install正在尝试安装新的python模块,这些模块需要更新版本的distribute,而不是我们版本的pip/easy_install。正如X-Cubed所指出的,easy_install (因此pip)需要一个特定的旧版本的分发。worked的解决方案对我起了作用,但我没有取消版本,而是将其设置为最小,以便其他easy_installs (和pips)可以在必要时要求更低的版本。因此,更改的/usr/bin/行是:

代码语言:javascript
复制
__requires__ = 'distribute>0.6.10'

代码语言:javascript
复制
load_entry_point('distribute>0.6.10', 'console_scripts', 'easy_install')()

据推测,distribute很不错,而且总是相反兼容的。如果是这样的话,这将导致比easy_install更少的问题,它需要一个特定版本的分发,而这个版本对于许多python模块都不起作用。

然后,我重新运行了我的需求(pip install requirements/*)的pip,它需要URLObject python模块,并且在我做了这个更改之后,它很好地解决了版本冲突问题。(因此X-Cubed至少部分正确,而且很可能100%正确)。

这个sed也会修复它。

代码语言:javascript
复制
sudo sed -i -r -e 's/distribute==/distribute>/g' /usr/bin/easy_install
票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/95280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档