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

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

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

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

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

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

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

Ответ 1

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

easy_install django

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

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

easy_install pip

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

pip install django

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

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

Ответ 2

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

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

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

Ответ 3

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

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

ИЛИ

sudo port install 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 install py26-setuptools

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

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

port list | grep py26-

ИЛИ

port list | grep py30-

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

easy_install nose

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

easy_install trac

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

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

Ответ 8

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

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

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

which python

Ответ 9

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

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

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

Ответ 10

Что касается версии 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-/

Ответ 11

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

Ответ 12

Непосредственно установите один из пакетов 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 плюс любые другие пакеты, установленные в 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