& ldquo; Требуемая версия дистрибутива недоступна & rdquo; при установке IMAPClient

Я получаю следующую ошибку, когда запускаю команду «easy_install imapclient»:

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 распространять ", как предложено в вышеприведенном выводе, который возвращает следующий вывод:

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

Я использую 64-битный сервер Ubuntu 10.04, если это поможет.

3
задан 30 November 2012 в 23:30

2 ответа

Я уверен, что это не правильный способ сделать это, но это сработало для меня. Я изменил скрипт / usr / bin / easy_install и удалил ограничение версии для дистрибутива, поэтому теперь оно выглядит так:

#! /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')()
    )
0
ответ дан 30 November 2012 в 23:30

У меня была такая же проблема на той же версии Ubuntu (но 32-битная вместо 64).

Проблема в том, что наша старая версия pip и easy_install пытается установить более новые модули python, для которых требуются более новые версии distribute, чем наша версия pip / easy_install. И, как указал X-Cubed, для easy_install (отсюда pip) требуется определенная старая версия дистрибутива. Решение X-Cubed работало для меня, но вместо того, чтобы исключить версию, я установил ее на минимум, так что для других easy_installs (и pips) могут потребоваться более низкие версии, если это необходимо. Таким образом, изменились строки / usr / bin / easy_install:

__requires__ = 'distribute>0.6.10'

и

load_entry_point('distribute>0.6.10', 'console_scripts', 'easy_install')()

Предположительно distribute играет красиво и всегда обратно совместимо. Если это так, это вызовет меньше проблем, чем easy_install, требующий конкретной версии дистрибутива, которая не работает для многих модулей Python.

Затем я перезапустил pip для моих требований (pip install requirements/*), для которых требовался модуль URLObject python, и он справился с проблемой конфликта версий после того, как я сделал это изменение. (таким образом, X-Cubed был по крайней мере частично прав и, вероятно, на 100% прав).

Этот sed также исправит это.

sudo sed -i -r -e 's/distribute==/distribute>/g' /usr/bin/easy_install
0
ответ дан 30 November 2012 в 23:30

Другие вопросы по тегам:

Похожие вопросы: