Каков наиболее совместимый способ установки модулей Python на Mac? - PullRequest
124 голосов
/ 31 июля 2009

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

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

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

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

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

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

Ответы [ 13 ]

143 голосов
/ 31 июля 2009

Самый популярный способ управления пакетами 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 Python принесет вам меньше головной боли, но если вам нужна более новая версия (Leopard 2.5.1, я полагаю), я бы выбрал macports python. 2.6.

42 голосов
/ 28 августа 2011

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

Большинство людей, которых я знаю, используют 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:

pip-2.7 freeze

Если вы уже начали использовать 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

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

30 голосов
/ 31 июля 2009

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

sudo port install python26 python_select
sudo port select --set python python26

OR

sudo port install python30 python_select
sudo port select --set python python30

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

sudo port install py26-packagename

OR

sudo port install py30-packagename

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

sudo port install py26-setuptools

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

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

port list | grep py26-

OR

port list | grep py30-

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

7 голосов
/ 31 июля 2009

Я использую 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 используется для поиска исполняемых файлов, поэтому, если вы устанавливаете MacPorts 'Python, убедитесь, что /opt/local/bin находится в вашем $PATH.

6 голосов
/ 04 марта 2010

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

6 голосов
/ 31 июля 2009

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

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

4 голосов
/ 31 июля 2009

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

easy_install nose

для пакета тестирования носовой части или

easy_install trac

для trac системы отслеживания ошибок.

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

3 голосов
/ 16 августа 2009

Для установок MacPython я нашел эффективное решение для устранения проблемы с setuptools (easy_install) в этом сообщении в блоге:

http://droidism.com/getting-running-with-django-and-macpython-26-on-leopard

Один удобный совет включает в себя выяснение, какая версия python активна в терминале:

which python
2 голосов
/ 17 апреля 2018

Возможно, вы уже предустановили pip3, просто попробуйте!

2 голосов
/ 31 июля 2009

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

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

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

...