Não é possível instalar corretamente o mercurial - erro PYTHONPATH

1

Eu tenho um servidor rodando no Ubuntu 10.04 no qual eu queria instalar o Mercurial via

% sudo apt-get install mercurial

Parece ter sido instalado com sucesso e não mostra nenhuma mensagem de erro. Mas quando eu tento eu fico:

% hg
abort: couldn't find mercurial libraries in [/usr/bin /usr/lib/python2.6 /usr/lib/python2.6/plat-linux2 /usr/lib/python2.6/lib-tk /usr/lib/python2.6/lib-old /usr/lib/python2.6/lib-dynload /usr/lib/python2.6/dist-packages /usr/lib/pymodules/python2.6 /usr/local/lib/python2.6/dist-packages]
(check your install and PYTHONPATH)

Eu pesquisei por um tempo agora e encontrei alguns sites com o mesmo problema, mas ainda não tenho ideia de como consertá-lo, já que ele realmente diz o que preciso procurar ou o que preciso adicionar ao meu PYTHONPATH ...

A propósito, agora meu PYTHONPATH parece estar vazio:

% echo $PYTHONPATH

%

Isto é o que eu recebo se eu olhar para o meu diretório / usr / lib / para mercurial:

% find /usr/lib/py* -name 'mercurial*'
/usr/lib/pymodules/python2.6/mercurial
/usr/lib/pymodules/python2.6/mercurial-1.4.3.egg-info
/usr/lib/pyshared/python2.6/mercurial

Alguém por favor pode me ajudar com isso? Como (e como) devo definir o meu PYTHONPATH? Eu já tentei reinstalar, instalando com "easy_install mercurial" ou com "aptitude reinstalar mercurial" mas nada ajudou. Eu sempre recebo esse mesmo erro.

Seria ótimo se alguém pudesse ajudar ... obrigado!

ADIÇÃO:

Construir do zero não funcionou bem ... quando eu estou logado como root eu posso usar hg, mas quando eu acesso com meu usuário normal eu recebo:

% hg
Traceback (most recent call last):
  File "/usr/local/bin/hg", line 4, in <module>
    import pkg_resources
  File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2659, in <module>
    parse_requirements(__requires__), Environment()
  File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 546, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: mercurial==1.7.2
    
por florianbaethge 12.02.2011 / 14:25

6 respostas

2

Não tenho certeza sobre o motivo exato disso, mas resolvi um problema semelhante instalando o Mercurial a partir do código-fonte (talvez você queira remover qualquer pacote do Mercurial primeiro).

Faça o download do tarball do Mercurial aqui e extraia:

  tar tvf mercurial-1.7.5.tar.gz
  cd mercurial-1.7.5
  python setup.py install

... isso deve ser feito. Se você tem várias versões do python instaladas (2.5, 2.6, 2.7), use o último.

    
por 12.02.2011 / 14:55
1

Algo como isso aconteceu comigo no OS X quando dei ao sistema Python a primeira prioridade sobre a versão do python que eu tinha instalado com o Homebrew. Eu deveria ter adicionado a versão do Homebrew ao PATH, em vez de postpending. Mais informações no link .

Então, em .bash_profile ou no arquivo rc similar, mudei a ordem de

PATH=/usr/local/share/python:"${PATH}"
PATH=/usr/local/bin:"${PATH}"

para

PATH=/usr/local/bin:"${PATH}"
PATH=/usr/local/share/python:"${PATH}"

e depois o Mercurial parou de lançar esse erro.

    
por 25.09.2011 / 19:37
1

(Eu espero que você tenha resolvido isso agora, mas vou tentar dar alguns conselhos sobre como encontrar o Mercurial de qualquer maneira.)

Primeiro: por favor, para o canal de IRC , se você se deparar com esse tipo de problema. Isso é muito melhor do que tentar coisas aleatórias para fazer isso funcionar - instalar coisas aqui e ali só vai deixar você e seu sistema mais confusos: -)

Parece que você tentou várias coisas diferentes para instalar o Mercurial. Tenha muito cuidado ao misturar diferentes maneiras de instalar o Mercurial (ou qualquer outro programa Python, para esse assunto). O segundo erro que você recebe é porque você está iniciando uma versão do Mercurial (versão 1.7.2) e está encontrando bibliotecas antigas. Então você provavelmente já tem mais duas ou menos instalações em funcionamento.

Então, meu conselho seria remover o pacote do Ubuntu e remover qualquer outra versão do Mercurial. Procure por diretórios e arquivos chamados mercurial e exclua-os (mas exclua o pacote primeiro, é claro).

Em seguida, instale o pacote - se a versão no repositório normal do Ubuntu for muito antiga, use o PPA do Mercurial . O primeiro erro que você obteve significa que o Mercurial não pode encontrá-lo (isso é estranho e inesperado quando você instala o Mercurial a partir de um pacote do Ubuntu). Tente executar

$ python -c 'import mercurial; print mercurial'

para ver se você pode importar o pacote mercurial você mesmo. Se isso funcionar, você verá onde o pacote reside e poderá adicionar o diretório pai ao seu PYTHONPATH :

$ PYTHONPATH=/usr/lib/python2.7/dist-packages/ hg debuginstall

Se isso não funcionar, pesquise commands.py . Esse é um arquivo no Mercurial e o diretório principal desse arquivo deve estar no seu PYTHONPATH .

Isso deve colocá-lo em funcionamento ... mas, novamente, não é esperado que você tenha que mexer com isso quando instalar o Mercurial usando um gerenciador de pacotes.

    
por 25.12.2011 / 00:22
1

Eu tive exatamente o mesmo problema e é isso que parece ter funcionado (pode ser que houvesse algo mais que eu fiz, mas não consigo me lembrar agora):

sudo apt-get install mercurial

sudo apt-get install --reinstall python-software-properties && sudo dpkg-reconfigure python-software-properties
    
por 06.03.2012 / 22:31
1

Basta adicionar o caminho do lib Mercurial ao PYTHONPATH.

  1. Localize as bibliotecas: locate mercurial e localize o Lib PATH. Por exemplo. /usr/lib64/python2.6/site-packages/mercurial;
  2. Adicione o Caminho Lib para PYTHONPATH: export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.6/site-packages .

O caminho Lib pode ser um lugar diferente em sua máquina. E você poderia adicionar permanentemente a sentença de exportação para ~ / .bashrc ou ~ / .zshrc.

    
por 30.06.2016 / 05:15
0

Eu estava recebendo esse erro também, e reinstalar, remover / instalar não ajudou. Descobri que meu sistema tinha o Python2.3 e o Python2.4 instalados. Ele estava usando o Python2.4, mas as bibliotecas mercurial foram instaladas no Python2.3. Eu copiei as bibliotecas do mercurial para o Python2.4 e consertei o problema. Aqui estão os comandos que usei para copiar as bibliotecas:

cd /usr/lib64/python2.4/site-packages sudo cp -r /usr/lib64/python2.3/site-packages/mercurial.

    
por 15.03.2012 / 01:55