Каков наиболее совместимый способ установки модулей Python на Mac?

125

Я начинаю изучать питон и люблю его. В основном я работаю на Mac, а также на Linux. Я нахожу это в Linux (в основном Ubuntu 9.04), когда я устанавливаю модуль python с помощью apt-get, он отлично работает. Я могу импортировать это без проблем.

На Mac я привык использовать Macports для установки всего Unixy. Однако я обнаружил, что большинство модулей python, которые я устанавливаю с ним, не просматриваются python. Я потратил некоторое время, играя с настройками PATH и используя python_select. На самом деле ничего не работает, и на данный момент я не совсем понимаю, вместо этого я просто ковыряюсь.

У меня сложилось впечатление, что не все любят Macports для управления модулями Python. Я хотел бы начать все сначала, используя более «общепринятый» (если это правильное слово) подход.

Итак, мне было интересно, какой метод используют разработчики Python для Mac для управления своими модулями?

Бонусные вопросы:

Вы используете питон Apple или какую-то другую версию? Вы компилируете все из исходников или есть хорошо работающий менеджер пакетов (Fink?).

GloryFish
источник
Некоторое
Тодд Гамблин
7
MacPorts идеально подходит для Python на Mac. ПРИМЕЧАНИЕ: вам необходимо установить пакеты Python через MacPorts, чтобы они были установлены в вашу установку MacPorts Python. Вы также можете устанавливать пакеты без использования MacPorts; однако вам нужно сделать эту версию python по умолчанию с помощью python_select ПЕРЕД установкой пакета. Если вы установите пакет, а затем используете python_select, это не будет иметь никакого значения, поскольку он будет установлен в той версии Python, которая была по умолчанию во время установки.
Майкл Аарон Сафян

Ответы:

144

Самый популярный способ управления пакетами python (если вы не используете свой системный менеджер пакетов) - использовать setuptools и easy_install. Вероятно, он уже установлен в вашей системе. Используйте это так:

easy_install django

easy_install использует индекс пакетов Python, который является прекрасным ресурсом для разработчиков Python. Посмотрите вокруг, какие пакеты доступны.

Лучшим вариантом является pip , который набирает обороты, поскольку пытается исправить множество проблем, связанных с easy_install. Pip использует тот же репозиторий пакетов, что и easy_install, просто он работает лучше. На самом деле, единственный раз, когда нужно использовать easy_install, нужно использовать эту команду:

easy_install pip

После этого используйте:

pip install django

В какой-то момент вы, вероятно, захотите немного узнать о virtualenv . Если вы много разрабатываете на Python в проектах с конфликтующими требованиями к пакетам, virtualenv - находка. Это позволит вам иметь совершенно разные версии различных пакетов и легко переключаться между ними в зависимости от ваших потребностей.

Что касается того, какой питон использовать, то использование Python от Apple доставит вам меньше всего головной боли, но если вам нужна более новая версия (я считаю, что Leopard - это 2.5.1), я бы выбрал macports python 2.6.

sixthgear
источник
5
Я недавно перестроил свою машину и перешел на использование только Homebrew и PIP, внезапно все проблемы сборки, которые у меня были, исчезли.
GloryFish
42

Вашему вопросу уже три года, и есть некоторые детали, не раскрытые в других ответах:

Большинство людей, которых я знаю, используют HomeBrew или MacPorts , я предпочитаю MacPorts из-за того, что он полностью соответствует среде Mac OS X по умолчанию и моим настройкам разработки. Просто переместите папку / opt и протестируйте свои пакеты в обычной пользовательской среде Python.

MacPorts переносится только на Mac, но с помощью easy_install или pip вы узнаете, как настроить свою среду на любой платформе (Win / Mac / Linux / Bsd ...). Кроме того, он всегда будет более актуальным и с большим количеством пакетов

Я лично позволяю MacPorts обрабатывать мои модули Python, чтобы все было в курсе. Как и любой другой менеджер пакетов высокого уровня (например, apt-get), он намного лучше подходит для тяжелой работы с модулями с большим количеством двоичных зависимостей. Я не могу создать свои привязки Qt (PySide) с помощью easy_install или pip. Qt огромен и требует много времени для компиляции. Как только вам понадобится пакет Python, которому нужна библиотека, используемая программами, отличными от Python, старайтесь избегать easy_install или pip

В какой-то момент вы обнаружите, что в MacPorts отсутствуют некоторые пакеты. Я не верю, что MacPorts когда-либо предоставит вам весь CheeseShop . Например, недавно мне понадобился модуль Elixir , но MacPorts предлагает только py25-elixir и py26-elixir, а не версию py27. В таких случаях у вас есть:

pip-2.7 install --user elixir

(убедитесь, что вы всегда набираете pip- (версия))

Это создаст дополнительную библиотеку Python в вашем домашнем каталоге. Да, Python будет работать с более чем одним расположением библиотеки: одно находится под контролем MacPorts, а другое - локальным пользователем для всего, что отсутствует в MacPorts.

Теперь обратите внимание, что я предпочитаю pip над easy_install. Есть веская причина избегать использования setuptools и easy_install. Вот хорошее объяснение, и я стараюсь держаться от них подальше. Одна очень полезная функция pip - предоставить вам список всех модулей (вместе с их версиями), которые вы установили с помощью MacPorts, easy_install и самого pip:

пип-2.7 заморозить

Если вы уже начали использовать easy_install, не волнуйтесь, pip может распознать все, что уже сделано easy_install, и даже обновить пакеты, установленные с его помощью.

Если вы разработчик, следите за virtualenv для управления различными настройками и комбинациями версий модулей. В других ответах уже упоминается об этом, но до сих пор не упоминается модуль Tox , инструмент для проверки правильности установки вашего пакета с разными версиями Python.

Хотя у меня обычно нет конфликтов версий, мне нравится иметь virtualenv, чтобы настроить чистую среду и получить четкое представление о зависимостях моих пакетов. Таким образом, я никогда не забуду никаких зависимостей в моем setup.py

Если вы выбираете MacPorts, имейте в виду, что несколько версий одного и того же пакета больше не выбираются, как старый стиль Debian с дополнительным пакетом python_select (он все еще существует для совместимости). Теперь у вас есть команда select, чтобы выбрать, какая версия Python будет использоваться (вы даже можете выбрать те, которые установлены Apple):

$  port select python
Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python27-apple
    python32

$ port select python python32

Добавьте tox поверх него, и ваши программы должны быть действительно портативными

SystematicFrank
источник
30

Смотрите среду разработки Python OS X . Лучше всего использовать MacPorts . Загрузите и установите MacPorts, затем установите Python через MacPorts, введя следующие команды в Терминале:

sudo port установить python26 python_select
sudo port select --set python python26

ИЛИ

sudo port установить python30 python_select
sudo port select --set python python30

Используйте первый набор команд для установки Python 2.6, а второй набор - для установки Python 3.0. Затем используйте:

sudo port install py26-packagename

ИЛИ

sudo port install py30-packagename

В приведенных выше командах замените packagename на имя пакета, например:

sudo port установить py26-setuptools

Эти команды автоматически установят пакет (и его зависимости) для данной версии Python.

Чтобы получить полный список доступных пакетов для Python, введите:

список портов | grep py26-

ИЛИ

список портов | grep py30-

Какую команду вы используете, зависит от того, какую версию Python вы выбрали для установки.

Михаил Аарон Сафян
источник
1
Для справки, в последних версиях MacPorts sudo python_select python30был заменен на sudo port select --set python python30.
Бенджамин Ходжсон
7

Я использую MacPorts для установки Python и любых сторонних модулей, отслеживаемых MacPorts /opt/local, и устанавливаю любые вручную установленные модули (те, которые не находятся в репозитории MacPorts) /usr/local, и это никогда не вызывало никаких проблем. Я думаю, вы можете быть сбиты с толку относительно использования определенных сценариев MacPorts и переменных среды.

MacPorts python_selectиспользуется для выбора «текущей» версии Python, но он не имеет ничего общего с модулями. Это позволяет, например, установить Python 2.5 и Python 2.6 с помощью MacPorts и переключаться между установками.

В $PATHпеременные окружения никак не влияет на то , что модули Python загружаются. $PYTHONPATHэто то, что вы ищете. $PYTHONPATHдолжен указывать на каталоги, содержащие модули Python, которые вы хотите загрузить. В моем случае моя $PYTHONPATHпеременная содержит /usr/local/lib/python26/site-packages. Если вы используете Python для MacPorts, он настраивает для вас другие подходящие каталоги, поэтому вам нужно только добавить дополнительные пути к файлам $PYTHONPATH. Но опять же, он $PATHвообще не используется, когда Python ищет модули, которые вы установили.

$PATH это используется для поиска исполняемых файлов, так что если вы установите Python MacPorts', убедитесь , что /opt/local/binнаходится в вашем $PATH.

mipadi
источник
6

Нет ничего плохого в использовании установки MacPorts Python. Если вы устанавливаете модули Python из MacPorts, но не видите их, это, вероятно, означает, что вы не вызываете установленный вами Python MacPorts. В оболочке терминала вы можете использовать абсолютные пути для вызова различных Python, которые могут быть установлены. Например:

$ /usr/bin/python2.5         # Apple-supplied 2.5 (Leopard)
$ /opt/local/bin/python2.5   # MacPorts 2.5
$ /opt/local/bin/python2.6   # MacPorts 2.6
$ /usr/local/bin/python2.6   # python.org (MacPython) 2.6
$ /usr/local/bin/python3.1   # python.org (MacPython) 3.1

Чтобы получить правильный питон по умолчанию, необходимо убедиться, что ваша оболочка $ PATH настроена правильно, чтобы сначала был найден правильный исполняемый файл. Другое решение - определить псевдонимы оболочки для различных питонов.

Установка python.org (MacPython) тоже подойдет, как предлагали другие. easy_install может помочь, но, опять же, поскольку у каждого экземпляра Python может быть своя собственная easy_installкоманда, убедитесь, что вы вызываете правильную команду easy_install.

Нед Дейли
источник
2
Если он использует MacPorts, правильный способ сделать эту версию Python по умолчанию - не связываться с PATH, а установить «python_select» и позволить ему автоматически переключать необходимые символические ссылки, чтобы эта версия Python использовалась по умолчанию.
Майкл Аарон Сафян
3
python_select управляет только символическими ссылками Python в / opt / local / bin, и нет гарантии, что / opt / local / bin будет перед / usr / local / bin или / usr / bin в вашем $ PATH (хотя первоначальная установка MacPorts пытается Сделай так). Дело в том, что с несколькими доступными версиями использование только «python» или даже «python2.5» в целом является своего рода чушью: вы не знаете, на каком Python попадете, если не знаете о $ Ошибки PATH и / или использовать абсолютные пути.
Нед Дейли, 02
6

Если вы используете Python из MacPorts, у него есть собственный easy_install, расположенный по адресу: /opt/local/bin/easy_install-2.6 (для py26, то есть). Это не то же самое, что просто вызвать easy_install напрямую, даже если вы использовали python_select для изменения своей команды python по умолчанию.

тюдоровский
источник
1
То же самое для пункта. При настройке MacPorts я запускаю pip-2.6 (который находится в / opt / local / bin /), чтобы установить модули Python, которые хорошо сочетаются с Python MacPorts. Вы можете sudo port install py2.6-pipполучить пип.
zlovelady 08
4

Вы вообще изучали easy_install ? Он не будет синхронизировать ваши macports или что-то в этом роде, но он автоматически загрузит последний пакет и все необходимые зависимости, т.е.

easy_install nose

для пакета модульного тестирования носа, или

easy_install trac

для trac трекера ошибок.

На их странице EasyInstall также есть немного дополнительной информации .

Марк Рушаков
источник
1
easy_install в порядке. Просто имейте в виду, что так же, как у вас может быть установлено несколько версий python, легко установить несколько версий easy_install, каждая из которых связана с другой установкой / версией python. Вам просто нужно убедиться, что вы понимаете, какой из них вы вызываете (который (1) может помочь).
Нед Дейли,
2

Когда вы устанавливаете модули с MacPorts, они не входят в версию Python от Apple. Вместо этого эти модули устанавливаются в выбранную версию Python для MacPorts.

Вы можете изменить версию Python, используемую по умолчанию, с помощью порта для Mac под названием python_select . инструкции здесь .

Также есть easy_install . Который будет использовать python для установки модулей python.

Джон В
источник
python_selectустарел, см. новые ответы.
askewchan
2

Возможно, у вас уже есть pip3предустановка, поэтому просто попробуйте!

Шаян Амани
источник
1

Что касается того, какую версию python использовать, Mac OS обычно поставляет старую версию python. Рекомендуется перейти на более новую версию. Вы можете загрузить .dmg с http://www.python.org/download/ . Если вы это сделаете, не забудьте обновить путь. Вы можете найти точные команды здесь http://farmdev.com/gotits/66/python-3-0-on-mac-os-x-alongside-2-6-2-5-etc-/

Марио Ф
источник
-1

Непосредственно установите один из пакетов fink (Django 1.6 по состоянию на ноябрь 2013 г.)

fink install django-py27
fink install django-py33

Или создайте себе virtualenv:

fink install virtualenv-py27
virtualenv django-env
source django-env/bin/activate
pip install django
deactivate # when you are done

Или используйте fink django плюс любые другие установленные пакеты pip в virtualenv

fink install django-py27
fink install virtualenv-py27
virtualenv django-env --system-site-packages
source django-env/bin/activate
# django already installed
pip install django-analytical # or anything else you might want
deactivate # back to your normally scheduled programming
Курт Швер
источник