“Versão necessária da distribuição não disponível” ao instalar o IMAPClient

3

Estou recebendo o seguinte erro ao executar o comando "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

Alguma opinião sobre o que pode estar causando isso?

Eu tentei executar o "easy_install -U distribuir" como sugerido na saída acima, que retorna a seguinte saída:

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

Estou executando o Ubuntu 10.04 64-bit Server, se isso ajudar qualquer um.

    
por Joshua Burns 14.01.2012 / 01:42

2 respostas

2

Tenho certeza de que este não é o jeito certo de fazê-lo, mas funcionou para mim. Eu modifiquei o script / usr / bin / easy_install e removi a restrição de versão para distribuição, então agora se parece com isto:

#! /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')()
    )
    
por X-Cubed 30.05.2012 / 10:05
2

Eu tive o mesmo problema na mesma versão do Ubuntu (mas 32 bits em vez de 64).

O problema é que nossa versão antiga do pip e easy_install está tentando instalar módulos python mais novos que exigem versões mais recentes de distribute do que nossa versão de likes pip / easy_install. E como X-Cubed apontou, easy_install (portanto, pip) requer uma versão antiga específica da distribuição. A solução do X-Cubed funcionou para mim, mas em vez de eliminar a versão, configurei-a no mínimo, para que outras easy_installs (e pips) possam exigir versões inferiores, se necessário. Então, as linhas / usr / bin / easy_install que mudaram são:

__requires__ = 'distribute>0.6.10'

e

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

Presumivelmente, distribute é legal e é sempre compatível com reversão. Nesse caso, isso causará menos problemas do que o easy_install, exigindo uma versão específica de distribuição que não funciona para muitos módulos python.

Em seguida, reran pip para meus requisitos ( pip install requirements/* ), que precisavam do módulo URLObject python, e passou pelo problema do conflito de versões bem depois de fazer essa alteração. (então X-Cubed estava pelo menos parcialmente certo e provavelmente 100% correto).

Este sed também irá corrigir isso

sudo sed -i -r -e 's/distribute==/distribute>/g' /usr/bin/easy_install
    
por hobs 10.07.2012 / 23:44

Tags