Який найбільш сумісний спосіб встановлення модулів python на Mac?


125

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

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

У мене складається враження, що Macports не любить повсюдно керувати модулями python. Я хотів би почати по-новому, використовуючи більш "прийнятий" (якщо це правильне слово) підхід.

Отже, мені було цікаво, що таке метод, який розробники Mac python використовують для управління своїми модулями?

Питання про бонус:

Ви використовуєте пітон Apple або якусь іншу версію? Ви збираєте все з джерела чи є керування пакетами, яке добре працює (Fink?).


З’явилася приємна стаття про упаковку програм PyQt для Mac OS X в Ars Technica: Arstechnica.com/open-source/guides/2009/03/…
Todd Gamblin

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. Погляньте навколо, щоб побачити, які пакунки доступні.

Кращим варіантом є піп , який набирає тягу, оскільки намагається виправити багато проблем, пов'язаних з easy_install. Pip використовує те саме сховище пакетів, що і easy_install, воно просто працює краще. Дійсно, для використання команди easy_install єдиним часом є ця команда:

easy_install pip

Після цього використовуйте:

pip install django

В якийсь момент ви, мабуть, захочете трохи дізнатися про virtualenv . Якщо ви багато розробляєте python для проектів із суперечливими вимогами до пакету, virtualenv - це знахідка. Це дозволить вам мати абсолютно різні версії різних пакетів та легко перемикатися між ними залежно від ваших потреб.

Що стосується того, який питон використовувати, дотримування пітона Pyon буде мати найменші головні болі, але якщо вам потрібна нова версія (я вважаю, що Leopard - це 2.5.1), я б пішов з python 2.6 для макпортів .


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-еліксир та py26-еліксир, не версія py27. У таких випадках у вас є:

pip-2.7 install - еліксир користувача

(переконайтеся, що ви завжди вводите pip- (версія))

Це створить додаткову бібліотеку Python у вашому домашньому режисері. Так, Python буде працювати з більш ніж одним розташуванням бібліотеки: одним, яким керує MacPorts, і місцевим користувачем для всього, що відсутнє в MacPorts.

Тепер зауважте, що я віддаю перевагу pip над easy_install. Є вагома причина, що вам слід уникати setuptools та easy_install. Ось гарне пояснення, і я намагаюся утримуватися від них. Однією з дуже корисних особливостей pip є перелік усіх модулів (разом з їх версіями), які ви встановили разом із MacPorts, easy_install та самим pip:

pip-2.7 заморожування

Якщо ви вже почали використовувати easy_install, не хвилюйтесь, pip може розпізнати все, що вже було зроблено easy_install, і навіть оновити встановлені з ним пакети.

Якщо ви розробник, слідкуйте за virtualenv для контролю різних налаштувань та комбінацій версій модулів. В інших відповідях вже згадується, що поки що не згадується - це модуль Tox , інструмент для перевірки правильності встановлення вашого пакета з різними версіями Python.

Хоча у мене зазвичай немає конфліктів між версіями, мені подобається мати віртуаленти, щоб створити чисте середовище та отримати чітке уявлення про залежність моїх пакетів. Таким чином я ніколи не забуваю будь-які залежності в моїй 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

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

порт sudo встановити python26 python_select
sudo port select - набір python python26

АБО

порт sudo встановити python30 python_select
sudo port select - набір python python30

Використовуйте перший набір команд для установки Python 2.6, а другий набір для установки Python 3.0. Потім використовуйте:

порт sudo встановити py26-ім'я пакета

АБО

порт sudo встановити py30-ім'я пакета

У наведених вище командах замініть імяпакет з ім'ям пакета, наприклад:

порту sudo встановити 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. Якщо ви використовуєте MacPorts 'Python, він налаштовує інші власні каталоги для вас, тому вам потрібно лише додати додаткові шляхи до $PYTHONPATH. Але знову ж таки, $PATHзовсім не використовується, коли Python шукає встановлені модулі.

$PATH це використовується для пошуку файлів, так що якщо ви встановите Python MacPorts ', переконайтеся , що /opt/local/binзнаходиться у вашому $PATH.


6

Немає нічого поганого у використанні установки MacPorts Python. Якщо ви встановлюєте модулі python з MacPorts, але не бачите їх, це, ймовірно, означає, що ви не посилаєтесь на 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

Щоб отримати правильний python за замовчуванням, потрібно забезпечити, щоб оболонка $ 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 підводні камені та / або використовувати абсолютні шляхи.
Нед Дейлі

6

Якщо ви використовуєте Python від MacPorts, він має власну easy_install, розташовану за адресою: /opt/local/bin/easy_install-2.6 (для py26, тобто). Це не те саме, що просто викликати easy_install безпосередньо, навіть якщо для зміни вашої команди python за замовчуванням ви використовували python_select.


1
Те саме для піп. З моїм налаштуванням MacPorts я запускаю pip-2.6 (який знаходиться в / opt / local / bin /), щоб встановити модулі python, які добре грають з пітоном MacPorts. Можна sudo port install py2.6-pipотримати піп.
zlovelady

4

Ви взагалі заглянули в easy_install ? Він не синхронізує ваші макпорти чи щось подібне, але автоматично завантажить останній пакет і всі необхідні залежності, тобто

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


1

Що стосується версії python, яку слід використовувати, Mac OS зазвичай постачає стару версію python. Хороша ідея перейти на новішу версію. Ви можете завантажити .dmg з http://www.python.org/download/ . Якщо ви це зробите, не забудьте оновити шлях. Точні команди ви можете знайти тут http://farmdev.com/oughts/66/python-3-0-on-mac-os-x-alongside-2-6-2-5-etc-/



-1

Безпосередньо встановіть один із найсильніших пакетів (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

Або використовувати фінк-джанго плюс будь-які інші пакети, встановлені на 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.