Получение Python под контролем в Mac OS X-настройка среды и библиотек
после начала работы с Python на Ubuntu Linux, я уже давно делаю большую часть своей постоянной работы на Mac, в настоящее время Mac OS X 10.6. К сожалению, я забыл уделить должное внимание тому, как Python установлен там и в конечном итоге:
- Python 2.6.1 (версия по умолчанию для Mac?) in
/usr/bin
(также, 2.5.4, который я не уверен, как он туда попал) - Python 2.6.5 установлен через MacPorts на
/opt/local/bin/
. Это мой по умолчанию - я использую
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
via 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
систематически, так в чем же связь с хорошим практическим введением?
3 ответов
virutalenv
- отличный инструмент и очень полезен для управления несколькими экземплярами Python на большинстве платформ. В Mac OS X, однако, все сложнее, потому что использование фреймворка строит делает его общим, чтобы столкнуться с несколькими экземплярами даже одной и той же основной версии Python. Я предлагаю вам сначала понять и быть комфортно с тем, как управлять установками framework на Mac OS X, прежде чем углубляться в virtualenv
.
"/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
- СРСЛИ?"
Да,это местоположение по умолчанию в сборке Python Mac OS X framework. Большинство распространителей Python на Mac OS X используют платформы, каждый обычно использует другой корень, потому что это упрощает поддержку нескольких версий и сохранение всех пакетов сайта, установленных для конкретного экземпляра Python, вместе в одном месте.
для Mac OS X 10.6, Apple поставляет Python 2.6 (корни в /System/Library/Frameworks/Python.framework
и symlinked к /usr/bin/python2.6
), а также Python 2.5 (для совместимости с Mac OS X 10.5 - это /usr/bin/python2.5
вы видите). В python.org установщики Mac OS X установить в /Library/Frameworks/Python.framework
. Системы MacPorts использует /opt/local/Library/Frameworks/Python.framework
.
рамки включают в себя bin
каталог (at ../Versions/x.x/bin
в рамках); обычно это место по умолчанию, где будут установлены сценарии пакетов. Там же ссылки на бинарники переводчик помещаются.
вот посмотрите на питона.структура org-style с установлено несколько версий 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 Current@ -> 2.6
$ cd 2.6
$ ls -l
total 7776
lrwxr-xr-x 1 root admin 17 Aug 10 21:47 Headers@ -> 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 idle@ -> 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 pydoc@ -> 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 python@ -> python2.6
lrwxr-xr-x 1 root admin 16 Aug 10 21:47 python-config@ -> 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 pythonw@ -> 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 smtpd.py@ -> 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 python@ -> python2.6
lrwxr-xr-x 1 root wheel 16 Jul 15 01:58 python-config@ -> 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
и будут счастливо сосуществовать с другими версиями. Чтобы успешно использовать установки framework, необходимо управлять оболочкой PATH
. В частности, вы должны убедиться, что рамки питона(ы) вы хотите использовать на своем 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
или С Distribute
или setuptools
) для каждого экземпляра Python, который вы используете. Каждый из них установлен в директорию по умолчанию (т. е. в рамках ). MacPorts позаботится об этом автоматически при установке своей версии пакета (sudo port install py26-pip
или sudo port install py31-distribute
). Обратите внимание, что Apple поставляет набор easy_install
ссылки /usr/bin
для своих Pythons и они устанавливают пакеты в /Library/Python
. Вы должны убедиться, что используете easy_install
или pip
подходит для вашего экземпляра Python. Убедитесь, что framework экземпляра bin
каталог первый в PATH
гарантирует, что.
Примечание, Если вы используете MacPorts вы can использовать python_select
команда для управления экземпляром Python, на который указывает /opt/local/bin/python
. Тогда если /opt/local/bin
появляется раньше в списке, чем другие каталоги с python
он будет управлять, который является по умолчанию python
. Но вам действительно нужно управлять путем, добавив framework так python_select
вообще не все, что полезно.
еще один положительный аспект использования MacPorts (или аналогичного дистрибьютора на широкой основе) заключается в том, что он делает доступно множество популярных пакетов Python в том числе обработка случайных грязных деталей построения и ссылки на сторонние библиотеки C, не поставляемые с Mac OS X. Например,MySQLdb
и PIL
пакеты часто являются камнем преткновения на Mac OS X из-за клиентских библиотек MySQL и libjpeg
, но MacPorts делает его гораздо проще, чтобы получить все правильно. Но у вас есть выбор, чтобы установить вещи непосредственно с помощью MacPorts (sudo port py26-pil
) или через pip
(sudo pip install pil
) или easy_install
, или вы можете скачать источник, и сделать это самостоятельно (sudo python setup.py ...
). И потому что все они под обложками используют Python's Distutils
чтобы выполнить грязную работу, все эти методы обычно заканчиваются установкой файлов пакета в одном месте для данного экземпляра Python.
Я просто использовал "pythonbrew", который я easy_installed с системой Python на 10.6.7. Мне пришлось использовать опцию "--force", чтобы обойти тесты после компиляции, хотя, поскольку у меня были сбои с test_dl и test_readline (быстрая проверка google не показала, что это реальная проблема).
$ sudo easy_install pythonbrew
после установки, запустить дополнительные указания:
$ pythonbrew_install
Итак, теперь у меня есть хорошо изолированная установка python-2.7.1 без вмешательства в систему установка.
Я бы рекомендовал использовать Homebrew, как и люди Python Guide:
вот фантастический шаг за шагом руководство по началу работы:
http://docs.python-guide.org/en/latest/starting/install/osx/#install-osx