Como o Bazaar decide qual Python usar?

0

Estou no OS X 10.8. Meu sistema Python em /usr/bin é a versão 2.7.2. Eu cometi o erro (?) De instalar outra versão do Python, 2.7.3, via Homebrew. Esse está vinculado de /usr/local/bin . Meu PYTHONPATH aponta para o último; especificamente PYTHONPATH=/usr/local/bin: . Está certo?

Em qualquer caso, bzr --version outputs

Bazaar (bzr) 2.6b2
Python interpreter: /usr/bin/python2.6 2.6.7
Python standard library: /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
Platform: Darwin-12.2.1-x86_64-i386-64bit
bzrlib: /Library/Python/2.6/site-packages/bzrlib
Bazaar configuration: /Users/adam/.bazaar
Bazaar log file: /Users/adam/.bzr.log
...

Como o Bazaar está mesmo encontrando o 2.6.7 e como posso apontá-lo para a versão Homebrew? Eu pensei que era para isso que o PYTHONPATH era. O problema é que eu instalei módulos Python via Homebrew e pip e o Bazaar não consegue encontrá-los. Por fim, o que estou tentando fazer é converter um repositório compartilhado do Bazaar para o Git via fastimport, mas essa é outra questão ...

    
por Metaphile 14.03.2013 / 20:31

3 respostas

2

Primeiro, observe que o 10.8 vem com 2.5, 2.6 e 2.7, todos disponíveis como /usr/bin/python2.* .

Em seguida, como você instalou o Bazaar?

Eu estou supondo que você instalou um pacote binário, e ele foi especificamente empacotado para confiar em /usr/bin/python2.6 porque essa versão está lá em todas as versões do OS X 10.5+, ou porque é isso que eles testaram, ou ... o que for. / p>

(Também é possível que você o instale via, digamos, easy_install-2.6 , ou algum equivalente indireto da mesma coisa. Mas isso parece ser uma coisa tola a se fazer.)

Se você quer que o Bazaar use pacotes que você instalou via Homebrew, provavelmente você vai querer usar o próprio Homebrew, ou o pip do Homebrew's Python, para instalar o Bazaar.

De um comentário, você disse que se lembra vagamente de instalar o instalador da Canonical. Como sua página Downloads e Instalação do Mac OS X deixa claro, o que você baixou é para "Snow Leopard (10.6 - Python 2.6) ". (Também, você baixou a versão "Test" ao invés do stable, dado que você tem 2.6b1.) Ele até diz:

At some point the installer will be able to use 2.7 but for now this is the easiest way to get Bazaar working with Lion.

Então, tudo isso é documentado com bastante clareza. O instalador usa o sistema Python da Apple e usa especificamente o 2.6 para o OS X 10.6 +.

Como o Bazaar é puro código Python, a maneira como ele está encontrando o 2.6 é simples: A primeira linha do /usr/local/bin/bzr é algo assim:

#!/usr/bin/python2.6

ou:

#!/usr/bin/env python2.6

Você pode hackear isso para, digamos, #!/usr/local/bin/python2.7 . Mas isso é uma ideia muito ruim. Você tem algo que se instalou e se configurou em um Python, você não quer tentar executá-lo contra outro. (Como é puro código Python, ele geralmente funciona, mas às vezes falha de maneira misteriosa, o que provavelmente é pior do que o código que usa extensões C ou incorporação que provavelmente falhará imediatamente.)

    
por 14.03.2013 / 20:37
1

$PYTHONPATH é usado para especificar a localização de bibliotecas extras de python (muito semelhante a adicionar o caminho ao sys.path do python) e não ao próprio interpretador python. Eu estou supondo que seu sistema está pegando a versão do python, que é encontrada primeiro em $PATH .

Pode ser que você tenha outra versão do Python instalada, que é extraída de $PATH .

Você pode executar which python para descobrir o binário exato de python que está sendo usado.

    
por 14.03.2013 / 20:36
1

Eu construo os pacotes oficiais de instalação do Mac OS X para o Bazaar. No entanto, não sou funcionário da Canonical.

Se você estiver usando o pacote do instalador do Bazaar baixado do site da Canonical, ele será construído especificamente contra o Python 2.6 e o script bzr usar /usr/bin/python2.6 em seu cabeçalho para garantir que ele seja invocado com o Python 2.6. Existem algumas extensões nativas do Python que são compiladas contra o Python 2.6 quando eu construo o instalador, então executá-lo com outra versão principal do Python pode não funcionar (eu nunca tentei).

    
por 15.03.2013 / 14:41

Tags