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

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

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

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

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

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

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

13 ответов

Решение

Самый популярный способ управления пакетами 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), я бы остановился на python 2.6 для macports.

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

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

(убедитесь, что вы всегда набираете 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

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

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

порт sudo установить python26 python_select
выбор порта sudo --set python python26

ИЛИ ЖЕ

порт sudo установить python30 python_select
выбор порта sudo --set python python30

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

порт sudo установить py26-packagename

ИЛИ ЖЕ

порт sudo установить py30-packagename

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

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

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

Для получения полного списка доступных пакетов для Python введите:

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

ИЛИ ЖЕ

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

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

Я использую 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,

Нет ничего плохого в использовании 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,

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

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

easy_install nose

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

easy_install trac

для trac баг трекер.

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

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

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

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

which python

У вас уже может быть pip3 предустановлен, так что просто попробуйте!

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

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

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

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

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

fink install django-py27
fink install django-py33

Или создай себе виртальвен

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

Я использую easy_install с Apple Python, и он работает как шарм.

Другие вопросы по тегам