Я на OS X 10.8. Мой системный Python в /usr/bin - версия 2.7.2. Я сделал ошибку (?) установки другой версии Python, 2.7.3, через Homebrew. Это связано с /usr/local/bin . Мой PYTHONPATH указывает на последнее; в частности PYTHONPATH=/usr/local/bin: Это правильно?

В любом случае, bzr --version выводит

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
...

Как Bazaar даже находит 2.6.7 и как я могу указать его на версию для Homebrew? Я думал, что для этого PYTHONPATH. Проблема в том, что я установил модули Python через Homebrew и pip, и Bazaar не может их найти. В конечном итоге я пытаюсь преобразовать общий репозиторий Bazaar в Git с помощью fastimport, но это другой вопрос ...

3 ответа3

2

Во-первых, обратите внимание, что 10.8 поставляется с 2.5, 2.6 и 2.7, все они доступны как /usr/bin/python2.*

Далее, как вы установили Bazaar?

Я предполагаю, что вы установили двоичный пакет, и он был специально упакован для использования в /usr/bin/python2.6 потому что эта версия присутствует во всех версиях OS X 10.5+, или потому что это то, что они тестировали, или ... что угодно ,

(Также возможно, что вы установили его с помощью, скажем, easy_install-2.6 , или каким-то косвенным эквивалентом того же самого. Но это кажется глупостью.)

Если вы хотите, чтобы Bazaar использовал пакеты, которые вы установили через Homebrew, вы, вероятно, захотите использовать либо сам Homebrew, либо pip из Python Homebrew, чтобы установить Bazaar.


Из комментария вы сказали, что смутно помните, как запускали установщик из Canonical. Как видно из их страницы загрузки и установки Mac OS X , вы скачали "Snow Leopard (10.6 - Python 2.6)". (Кроме того, вы загрузили "тестовую" версию вместо стабильной, учитывая, что у вас есть 2.6b1.) Это даже говорит:

В какой-то момент установщик сможет использовать 2.7, но пока это самый простой способ заставить Bazaar работать с Lion.

Итак, все это довольно четко задокументировано. Их установщик использует систему Apple Python и, в частности, использует 2.6 для OS X 10.6+.


Поскольку Bazaar - это чистый код Python, способ поиска версии 2.6 прост: первая строка /usr/local/bin/bzr выглядит примерно так:

#!/usr/bin/python2.6

или же:

#!/usr/bin/env python2.6

Вы можете взломать это, скажем, до #!/usr/local/bin/python2.7 . Но это очень плохая идея. У вас есть что-то, что установлено и настроено на одном Python, вы не хотите пытаться запустить его на другом. (Так как это чистый код Python, он в основном будет работать, но иногда не получится таинственным образом, что, вероятно, хуже, чем код, использующий расширения C или встраивание, которое, вероятно, просто сразу завершится неудачей.)

1

$PYTHONPATH используется для указания расположения дополнительных библиотек python (очень похоже на добавление пути к sys.path python), а не самого интерпретатора python. Я предполагаю, что ваша система выбирает версию python, которая сначала находится в $PATH .

Возможно, у вас установлена другая версия Python, которая извлекается из $PATH .

Вы можете запустить which python чтобы выяснить, какой именно двоичный файл Python используется.

1

Я создаю официальные установочные пакеты для Mac OS X для Bazaar. Тем не менее, я не работаю в Canonical.

Если вы используете установочный пакет Bazaar, загруженный с веб-сайта Canonical, он создан специально для Python 2.6, а сценарий bzr использует /usr/bin/python2.6 в своем заголовке, чтобы обеспечить его запуск с Python 2.6. Существуют некоторые собственные расширения Python, которые скомпилированы для Python 2.6 при сборке установщика, поэтому запуск его с другой основной версией Python может не сработать (я никогда не пробовал).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .