it-swarm-pt.tech

Usando versões diferentes de Python

Histórico:

Desde que eu desenvolvi programas python que devem ser executados em versões diferentes python, instalei versões diferentes de python no meu computador .

Estou usando o FC 13, então ele veio com python 2.6 pré-instalado em /usr/bin/python2.6 e /usr/lib/python2.6.

Eu instalei python 2.5 a partir da fonte e, para manter as coisas organizadas, usei o --prefix=/usr opção, que instalou python em /usr/bin/python2.5 e /usr/lib/python2.5.

Agora, quando executo python meu prompt mostra 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 em /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 adicionaria ao PYTHONPATH, mas quando eu escrevo echo $PYTHONPATH at promt, acabei de receber uma linha vazia.

21
Alex

A maneira recomendada de ter várias versões Python instaladas é instalar cada uma da fonte - elas coexistem alegremente. Você pode usar o virtualenv com o intérprete apropriado para instalar as dependências necessárias (usando pip ou easy_install O truque para facilitar a instalação de vários intérpretes a partir da fonte é usar:

Sudo make altinstall

em vez do mais comum "Sudo make install". Isso adicionará o número da versão ao executável (para que você tenha python-2.5, python-2.6, python-3.2 etc), evitando assim qualquer conflito com a versão do sistema do Python.

20
VPeric

Isso soa como um aplicativo perfeito para virtualenv , uma ferramenta muito popular para criar ambientes isolados Python. Este é um exemplo de comando para especificar a versão do Python

$ virtualenv --python=/usr/bin/python2.6 myvirtualenv
13
Adam Byrtek

Usando easy_install, os pacotes são sempre instalados em /usr/lib/python2.6/site-packages/

Isso porque o distutils adiciona a linha Shebang a todos os scripts que estão sendo instalados. Se você executar easy_install script diretamente, é executado com o intérprete com o qual foi instalado (de acordo com a linha Shebang). Qual easy_install está sendo executado depende do seu PATH não PYTHONPATH. Se você deseja instalar um pacote na instância Python 2.5, você deve executar easy_install especificando Python para usar:

/usr/bin/python2.5/python easy_install ...

Estritamente falando virtualenv não ajuda aqui, pois deve ser criado no contexto de base Python, que é exatamente o mesmo problema da execução de easy_install. Isso é o que --python argumento de virtualenv é para. Por algum motivo easy_install não fornece argumento análogo, portanto, ele deve ser executado com o interpretador Python específico, como mostrado acima.

5
Piotr Dobrogost

Também estou usando o Fedora 13 e PYTHONPATH não está definido.

No python, sys.path fornecerá uma lista dos caminhos usados ​​para importar scripts.

Eu 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 qual python versão a ser executada easy_install under precedendo seu comando com o caminho completo para o python que você deseja.

Verifique também se easy_install é um link simbólico na lixeira para um script em uma python que você instalou.

2
bkersten

Virtualenv é definitivamente uma dádiva de Deus aqui.

Na minha configuração, tenho a variável de ambiente VIRTUALENV_USE_DISTRIBUTE defina 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:

$ virtualenv -p python2.6 py2
$ virtualenv -p python3.2 py3

Eu criei três aliases em .bashrc:

alias py2='source $HOME/py2/bin/activate'
alias py3='source $HOME/py3/bin/activate'
alias idle='python -m idlelib.idle'

Assim, eu posso usar py2 para mudar para o padrão Python 2.6 e py3 para mudar para o padrão Python 3.2. Digitando idle será executado a versão que for mais 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.

1
pythoneer