Подтвердить что ты не робот

Получение Python под управлением Mac OS X - настройка среды и библиотек

После запуска с Python на Ubuntu Linux, я сейчас хорошо выполняю большую часть своей работы на Mac, в настоящее время Mac OS X 10.6. К сожалению, я пренебрег тем, что уделил должное внимание тому, как там установлен Python, и в итоге:

  • Python 2.6.1 (версия для Mac по умолчанию?) в /usr/bin (также, 2.5.4, что я не уверен, как это получилось)
  • Python 2.6.5 установлен через MacPorts в /opt/local/bin/. Это мой default
  • Я использую pip для установки библиотек, которые попадают в какое-то нечестивое место (что-то вроде /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ - SRSLY?)
  • В противном случае, главным образом TextMate и Git для контроля версий. Django и Google App Engine и т.д.

Теперь я собираюсь настроить 2,7 и 3,2, и я недоволен случайным состоянием вещей. Итак, каковы ваши любимые подходы к организации кода и библиотек и как вы боролись с Mac в подчинении?

Я бы продолжил использовать pip, но хотел бы иметь больше контроля или, по крайней мере, понимать, какие библиотеки для какой версии устанавливаются и становятся доступными откуда: у меня были проблемы с установкой py.test через pip и только возможность загрузить его из устаревшего 2.6.1 Python, а не моего текущего 2.6.5. MacPorts имеет python_select, но это не слишком полезно:

reason: chris$ python_select -l
Available versions:
current none python26 python26-apple

Большинство пользователей Python, которых я просил, не используют MacPorts, что мне не очень нравится, но наличие Mac Python от python.org. Я также слышал рекомендацию использовать virtualenv систематически, так что же ссылка на хорошее практическое введение?

4b9b3361

Ответ 1

virutalenv - отличный инструмент и очень полезен для управления несколькими экземплярами Python на большинстве платформ. Тем не менее, в Mac OS X нет ничего сложнее, потому что использование фреймворков делает его обычным встретить несколько экземпляров одной и той же основной версии Python. Я предлагаю вам сначала понять и устроиться с тем, как управлять установками фреймворков на Mac OS X, прежде чем вникать в virtualenv.

"/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ - SRSLY?"

Да, это место по умолчанию в структуре фреймворка X-X под управлением Python. Большинство дистрибуторов Python на Mac OS X используют сборку фреймворков, каждый из которых обычно использует другой корень, поскольку упрощает поддержку нескольких версий и позволяет хранить все пакеты сайтов для конкретного экземпляра Python в одном месте.

Для Mac OS X 10.6 Apple поставляет Python 2.6 (внедрен в /System/Library/Frameworks/Python.framework и символически привязан к /usr/bin/python2.6), а также Python 2.5 (для совместимости с Mac OS X X 10.5), что /usr/bin/python2.5 вы видите). Установленные установщиком python.org Mac X устанавливаются на /Library/Frameworks/Python.framework. MacPorts использует /opt/local/Library/Frameworks/Python.framework.

Фреймы включают каталог bin../Versions/x.x/bin в рамках); обычно это место по умолчанию, в котором будут установлены сценарии пакета. Здесь также размещаются символические ссылки на двоичные файлы интерпретатора.

Здесь рассмотрим фреймворк python.org с несколькими версиями Python:

$ cd /Library/Frameworks/Python.framework/Versions/
$ ls -l
total 8
drwxrwxr-x  8 root  admin  340 Dec 23  2008 2.5/
drwxrwxr-x  8 root  admin  340 Aug 10 21:42 2.6/
drwxrwxr-x  8 root  admin  340 Jul  3 12:24 2.7/
drwxrwxr-x  7 root  admin  306 Mar 23 17:42 3.1/
drwxrwxr-x  7 root  admin  306 Aug 10 22:14 3.2/
lrwxr-xr-x  1 root  admin    3 Aug 10 21:47 [email protected] -> 2.6
$ cd 2.6
$ ls -l
total 7776
lrwxr-xr-x  1 root  admin       17 Aug 10 21:47 [email protected] -> include/python2.6
drwxrwxr-x  3 root  admin      102 Aug 10 21:42 Mac/
-r-xrwxr-x  1 root  admin  3973552 Aug 10 21:41 Python*
drwxrwxr-x  4 root  admin      170 Aug 10 21:48 Resources/
drwxrwxr-x  2 root  admin      578 Aug 12 15:19 bin/
drwxrwxr-x  3 root  admin      102 Aug 10 21:42 include/
drwxrwxr-x  3 root  admin      646 Aug 10 21:43 lib/
drwxrwxr-x  3 root  admin      102 Aug 10 21:41 share/
$ ls -l bin
total 264
-rwxrwxr-x  1 root  admin    150 Aug 10 21:41 2to3*
-rwxr-xr-x  1 nad   admin    360 Aug 12 15:19 easy_install*
-rwxr-xr-x  1 nad   admin    368 Aug 12 15:19 easy_install-2.6*
lrwxr-xr-x  1 root  admin      7 Aug 10 21:47 [email protected] -> idle2.6
-rwxrwxr-x  1 root  admin    138 Aug 10 21:41 idle2.6*
lrwxr-xr-x  1 root  admin      8 Aug 10 21:47 [email protected] -> pydoc2.6
-rwxrwxr-x  1 root  admin    123 Aug 10 21:41 pydoc2.6*
lrwxr-xr-x  1 root  admin      9 Aug 10 21:47 [email protected] -> python2.6
lrwxr-xr-x  1 root  admin     16 Aug 10 21:47 [email protected] -> python2.6-config
-rwxrwxr-x  1 root  admin  29584 Aug 10 21:43 python2.6*
-rwxrwxr-x  1 root  admin   1463 Aug 10 21:42 python2.6-config*
lrwxr-xr-x  1 root  admin     10 Aug 10 21:47 [email protected] -> pythonw2.6
-rwxrwxr-x  1 root  admin  29584 Aug 10 21:43 pythonw2.6*
lrwxr-xr-x  1 root  admin     11 Aug 10 21:47 [email protected] -> smtpd2.6.py
-rwxrwxr-x  1 root  admin  18272 Aug 10 21:41 smtpd2.6.py*

Здесь MacPorts bin, включающий ряд дополнительных пакетов сайта:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6
$ ls -l bin
total 952
-rwxr-xr-x  2 root  wheel    160 Jul 15 01:56 2to3*
-rwxr-xr-x  2 root  wheel   1541 Jun  8 19:59 apirst2html.py*
-rwxr-xr-x  2 root  wheel    363 Oct  5  2009 bdist_mpkg*
[...]
-rwxr-xr-x  2 root  wheel    211 Jun  2 12:45 django-admin.py*
-rwxr-xr-x  2 root  wheel    410 Jul 15 17:30 easy_install*
-rwxr-xr-x  2 root  wheel    418 Jul 15 17:30 easy_install-2.6*
[...]
-rwxr-xr-x  2 root  wheel    368 Jun 24 02:00 pip*
-rwxr-xr-x  1 root  wheel    342 Sep 18  2009 pkginfo*
[...]
lrwxr-xr-x  1 root  wheel      9 Jul 15 01:58 [email protected] -> python2.6
lrwxr-xr-x  1 root  wheel     16 Jul 15 01:58 [email protected] -> python2.6-config
-rwxr-xr-x  2 root  wheel  24932 Jul 15 01:57 python2.6*
-rwxr-xr-x  2 root  wheel   1473 Jul 15 01:57 python2.6-config*
[...]

Если вы устанавливаете 2.7 или 3.1 Pythons с помощью установщиков python.org или MacPorts, все они внедряются под /Library/Frameworks или /opt/local/Library/Frameworks и будут счастливо сосуществовать с другими версиями. Чтобы успешно использовать фреймворки, вам необходимо управлять оболочкой PATH. В частности, вы должны убедиться, что каталог bin каталога Python (s), который вы хотите использовать, находится на вашем PATH. Итак, для MacPorts что-то вроде этого в ~/.bash_profile:

export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin:/opt/local/bin:$PATH

или для установщиков python.org:

export PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:$PATH

Кроме того, как правило, вам нужно установить отдельную версию ваших любимых надстроек управления пакетами Python (например, pip или easy_install) из Distribute или setuptools) для каждого используемого вами экземпляра Python. Каждый из них устанавливается в каталог по умолчанию script (т.е. Каталог bin). MacPorts автоматически об этом заботится, когда вы устанавливаете свою версию пакета (sudo port install py26-pip или sudo port install py31-distribute). Обратите внимание, что Apple поставляет набор easy_install ссылок в /usr/bin для своих Python и устанавливает пакеты на /Library/Python. Вам нужно убедиться, что вы используете easy_install или pip, подходящие для вашего экземпляра Python. Убедившись, что каталог framework bin является первым в PATH, гарантирует, что.

Примечание. Если вы используете MacPorts, вы можете использовать команду python_select для управления, на какой экземпляр Python указан /opt/local/bin/python. Затем, если /opt/local/bin появляется раньше в вашем списке PATH, чем в других каталогах с python, он будет определять, который является вашим значением по умолчанию python. Но вам действительно нужно управлять PATH, добавив каталог bin, поэтому python_select, как правило, не все, что полезно.

Другим положительным аспектом использования MacPorts (или подобного широко распространенного дистрибьютора) является то, что он предоставляет множество популярных пакетов Python, включая обработку случайных беспорядочных деталей построения и связывания с сторонними библиотеками C, не поставляемыми с Mac OS X X X, Например, пакеты MySQLdb и PIL являются частыми камнями преткновения в Mac OS X X из-за клиентских библиотек MySQL и libjpeg, но MacPorts упрощает все. Но у вас есть выбор, чтобы установить вещи напрямую с помощью MacPorts (sudo port py26-pil) или через pip (sudo pip install pil) или easy_install, или вы можете загрузить исходный код и сделать это самостоятельно (sudo python setup.py ...). И поскольку все они под обложками используют Python Distutils для выполнения грязной работы, все эти методы, как правило, завершают установку файлов пакетов в одном месте для данного экземпляра Python.

Ответ 2

Я просто использовал "pythonbrew", который я легко установил с помощью системы запаса Python на 10.6.7. Мне пришлось использовать параметр "-force", чтобы обойти тесты после компиляции, поскольку у меня были сбои с test_dl и test_readline (быстрая проверка Google не показала, что это настоящая проблема).

$ sudo easy_install pythonbrew

После установки запустите это для получения дополнительных инструкций:

$ pythonbrew_install

Итак, теперь у меня есть прекрасно изолированная установка python-2.7.1, не мешая установке системы.