Antecedentes :
Desde que desenvolvo programas python que devem ser executados em diferentes versões python, instalei versões diferentes do python no meu computador.
Estou usando o FC 13, então ele veio com o python 2.6 pré-instalado no /usr/bin/python2.6
e /usr/lib/python2.6
.
Eu instalei o python 2.5 a partir da fonte e, para manter as coisas organizadas, usei a --prefix=/usr
opção, que instalou o python no /usr/bin/python2.5
e /usr/lib/python2.5
.
Agora, quando executo python
meu prompt, mostro que estou usando a versão 2.5. No entanto, estou tendo alguns problemas com a instalação.
Gerenciamento de pacotes :
Usando easy_install, os pacotes são sempre instalados no /usr/lib/python2.6/site-packages/
. Eu baixei setuptools
.egg para python 2.5 e tentei instalá-lo, mas isso me dá um erro:
/usr/lib/python2.5/site-packages does NOT support .pth files
Parece que python2.5 não está no meu PYTHONPATH. Eu pensei que a instalação padrão se acrescentaria ao PYTHONPATH, mas quando eu escrevo echo $PYTHONPATH
no prompt, recebo apenas uma linha vazia.
Isso soa como um aplicativo perfeito para o virtualenv , uma ferramenta muito popular para criar ambientes isolados em Python. Este é um comando de amostra para especificar a versão do Python
fonte
virtualenv
é a solução neste caso. Veja minha resposta.Isso porque o distutils adiciona linha shebang a todos os scripts que estão sendo instalados. Se você executar o
easy_install
script diretamente, ele será executado com o intérprete com o qual foi instalado (de acordo com a linha shebang). O queeasy_install
está sendo executado depende do seuPATH
nãoPYTHONPATH
. Se você deseja instalar um pacote na instância do Python 2.5, execute aeasy_install
especificação do interpretador Python para usar:A rigor
virtualenv
, não ajuda aqui, pois deve ser criado no contexto do Python base, que é exatamente o mesmo problema da execuçãoeasy_install
. É para isso que serve o--python
argumentovirtualenv
. Por alguma razãoeasy_install
, não fornece argumento análogo; portanto, ele deve ser executado com um interpretador Python específico, como mostrado acima.fonte
Também estou usando o Fedora 13 e
PYTHONPATH
não está definido.No python,
sys.path
você fornecerá uma lista dos caminhos usados para importar scripts.Não estou familiarizado com como
easy_install
decide seu diretório de destino, mas tenho certeza de que haveria um argumento de linha de comando que você poderia fornecer.Tente especificar em qual versão do python executar
easy_install
, precedendo seu comando com o caminho completo para o python desejado.Verifique também se
easy_install
há um link simbólico no bin para um script em uma versão python que você instalou.fonte
Virtualenv é definitivamente uma dádiva de Deus aqui.
Na minha instalação, tenho a variável de ambiente
VIRTUALENV_USE_DISTRIBUTE
definida como 1, para que o pacote Distribute mais moderno seja usado em vez de setuptools. Criei ambientes virtuais para as duas versões do Python no meu sistema da seguinte forma:Criei três aliases em
.bashrc
:Portanto, eu posso usar
py2
para alternar para o padrão do Python 2.6 epy3
para o padrão do Python 3.2. A entradaidle
será executada conforme a versão do IDLE apropriada para o ambiente virtual em que estou.A instalação de pacotes em um desses ambientes virtuais geralmente envolve apenas um
pip install
comando.fonte