Como fazer o Mercurial encontrar uma versão atualizada do Python?

1

Meu sistema é RedHat 5 Linux e tem o python 2.4 padrão instalado. Para executar o Mercurial 1.81, tentei atualizar o python de 2.4 para 2.6 e eu pensei que eu tinha guardado em um diretório diferente. Eu coloquei hard link de python 2.6 para python . Agora, eu o removi e espero fazer o python apontando de volta para python 2.4 para evitar conflito de versões.

Aqui está o comando que usei para remover o link físico entre python e python 2.6 :

find -xdev -samefile /usr/bin/python | xargs rm

então eu usei comandos como:

 ln -s /usr/bin/python2.4 /usr/bin/python
 ln -s /usr/bin/python2.6 /usr/local/bin/python
 export PATH=/usr/local/bin:$PATH
 Change first line of hg to #!/usr/bin/env python
 PYTHONHOME=/usr/lib/python2.6
 PYTHONPATH=/usr/lib/python2.6 

Então, quando eu digitei "whereis python", aqui estão os resultados.

python: /usr/bin/python2.4 
/usr/bin/python 
/usr/lib/python2.4 
/usr/lib/python2.6 
/usr/local/bin/python 
/usr/include/python2.4 
/usr/include/python2.6 
/usr/share/man/man1/python.1.gz

Então, quando eu digitei which python , ele apontou para usr/bin/python . Quando digitei python -V , ele mostrou python 2.4.3 . Parece estar apontando para 2.4.3 . Então, quando eu usei o comando

python -c "import sys; print '\n' .join(sys.path)"

mostrou

 /usr/lib64/python24.zip
    /usr/lib64/python2.4
    /usr/lib64/python2.4/plat-linux2
    /usr/lib64/python2.4/lib-tk
    /usr/lib64/python2.4/lib-dynload
    /usr/lib64/python2.4/site-packages
    /usr/lib64/python2.4/site-packages/Numeric
    /usr/lib64/python2.4/site-packages/gtk-2.0
    /usr/lib/python2.4/site-packages

Eu tentei encontrar os caminhos do python 2.6 digitando find / -name python2.6 , ele mostrou

/usr/include/python2.6
/usr/lib/python2.6
/usr/lib64/python2.6

Aqui estão minhas perguntas:

  1. Como posso alterar a substituição dos resultados do on-liner acima para python 2.6 ?
  2. Por que não consigo encontrar um diretório como /usr/bin/python2.6 ou /usr/local/bin/python2.6 ? Isso significa que eu instalei meu python 2.6 incorretamente ou acidentalmente removi o diretório? Tem alguma coisa errada sobre os resultados que recebi desses comandos que eu digitei?
  3. Alguma idéia de como fazer o sistema executar python 2.6 quando eu usei "hg push"?
  4. Devo instalar o python 2.6 novamente em / usr / local / bin?
por Cassie 01.03.2012 / 21:24

1 resposta

0

  1. Instale virtualenv e virtualenvwrapper ( easy_install funcionou para mim, mas não se esqueça de adicionar a linha source /usr/local/bin/virtualenvwrapper.sh ao seu script de inicialização do shell e depois usar o script de inicialização para usar o wrapper)
  2. Executar mkvirtualenv -p /usr/lib/python2.6 ENVNAME (onde ENVNAME é o nome que você quiser, talvez hg ?)
  3. Adicione workon ENVNAME ao seu script de inicialização do shell (.profile,. * shrc, etc)

Agora seu sistema ainda poderá usar o 2.4, e todos os seus shells usarão o 2.6. Tenha cuidado, pois isso pode interromper as chamadas para outros aplicativos instalados pelo sistema, se as dependências deles não estiverem em seu ambiente virtual. Mas, como agora você tem o pip, deve ser fácil pip install $WHATEVER_IS_MISSING (ou execute o comando deactivate para sair do seu ambiente virtual, faça o seu trabalho e workon de volta para onde você estava).

Se você encontrar instâncias de hg iniciadas por processos fora dos shells (por exemplo, integração do gerenciador de arquivos?), recomendo colocar esse pequeno script em seu caminho e configurar esses processos para invocá-lo.

#!/bin/bash # or whatever your shell is
workon ENVNAME
hg $*

(Nota: você pode desativar o prompt (ENVNAME) definindo VIRTUAL_ENV_DISABLE_PROMPT antes em seu script de inicialização do que a linha workon )

    
por 26.04.2012 / 02:32