2010-07-01 4 views
14

Недавно я начал изучать Python, и я немного смущен тем, как пакеты распространяются и устанавливаются.Установка пакетов Python в Windows

Я понимаю, что официальный способ установки пакетов является Distutils: скачать архив с исходным кодом, распаковать его и запустить: python setup.py install, то модуль будет автоматически установиться

Я также знаю о Setuptools который поставляется с вспомогательным скриптом easy_install. Он использует яйца для распределения, и от того, что я понимаю, построен на вершине Distutils и делает то же самое, что и выше, плюс он берет на себя каких-либо зависимостей, необходимых, все выбираются из PyPi

Тогда есть pip, который я до сих пор не уверен, как он отличается от других.

Наконец, как я на машине окна, много пакетов также предлагает бинарные сборки через инсталлятор окна, особенно те, которые требуют компиляции C/Fortran кода, который в противном случае был бы кошмар, чтобы вручную собрать на (предполагается, что у вас есть среда MSVC или MinGW/Cygwin dev со всеми необходимыми настройками библиотек .. тем не менее, пытайтесь создать numpy или scipy самостоятельно, и вы поймете!)

Так может кто-то помочь мне разобраться во всем этом, и объяснить различия, плюсы/минусы каждого метода. Я хотел бы знать, как каждый отслеживает пакеты (реестр Windows, файлы конфигурации, ..). В частности, как бы вы могли управлять всеми вашими сторонними библиотеками (иметь возможность указывать установленные пакеты, отключать/удалять и т. Д.)

+0

Связанный: [Список установленных пакетов сайта python?] (Http://stackoverflow.com/questions/2300794/), [Можно ли устанавливать пакеты окон Python в virtualenvs?] (Http://stackoverflow.com/questions/3271590 /). В последнем упоминается * virtualenv *, но он действителен и за пределами * virtualenv *. –

+0

Это должно представлять интерес для всех, кто попадает на эту страницу: http://stackoverflow.com/a/14753678/97160 – Amro

ответ

11

Я использую pip, а не в Windows, поэтому я не могу обеспечить сравнение с вариант установки Windows, просто некоторая информация о пипе:

  • Пип построен на вершине setuptools и требует его установки.
  • Pip - это замена (улучшение) для easy_install setuptools. Он делает все, что делает easy_install, и многое другое (убедитесь, что все нужные дистрибутивы могут быть загружены до фактической установки любого из них, чтобы избежать сломанной установки, списка установленных дистрибутивов и версий, удалить, найти PyPI, установить из файла требований с перечислением нескольких дистрибутивов и версии ...).
  • В настоящее время Pip Pip не поддерживает установку какой-либо формы прекомпилированных или двоичных дистрибутивов, поэтому любые дистрибутивы с расширениями, требующими компиляции, могут быть установлены только в том случае, если у вас есть соответствующий компилятор. Поддержка установки из двоичных установщиков Windows находится в дорожной карте, но неясно, когда это произойдет.
  • До недавнего времени поддержка пэдов в Windows была неровной и непроверенной. Благодаря большой работе от Dave Abrahams, pip trunk теперь передает все свои тесты в Windows (и есть постоянный сервер интеграции, помогающий нам обеспечить, чтобы он оставался таким образом), но релиз еще не сделан, включая эту работу. Поэтому более надежная поддержка Windows должна появиться со следующей версией.
  • Все стандартные механизмы установки пакета Python хранят все метаданные об установленных дистрибутивах в файле или файлах рядом с фактическими установленными пакетами. Distutils использует файл distribution_name-X.X-pyX.X.egg-info, pip использует аналогично названный каталог с несколькими файлами метаданных. Easy_install помещает весь установленный код Python для распространения внутри своего собственного zipfile или каталога и помещает в него каталог EGG-INFO с метаданными. Если вы импортируете пакет Python из интерактивного приглашения, проверьте значение пакета.__файл__; вы должны найти метаданные для дистрибутива этого пакета.
  • Информация об установленных дистрибутивах хранится в любом виде глобального реестра с помощью специальных инструментов для работы с ОС, таких как установщики Windows, Apt или RPM. Стандартные инструменты упаковки Python не изменяют или не обращают внимание на эти списки.
  • Pip (или, на мой взгляд, любой инструмент для упаковки Python) лучше всего использовать с virtualenv, что позволяет создавать изолированные мини-среды Python для каждого проекта, в которые вы можете устанавливать пакеты, не влияя на общую систему. Каждый новый virtualenv автоматически поставляется с установленным в нем пипом.

Парочка другие проекты, которые вы можете захотеть, чтобы быть в курсе, как хорошо (да, есть больше!):

  • distribute форк Setuptools, который имеет некоторые дополнительные исправления ошибок и возможностей.
  • distutils2 предназначен для «следующего поколения» упаковки Python. Это (надеюсь) принятие лучших функций distutils/setuptools/distribute/pip. Он разрабатывается самостоятельно и еще не готов к использованию, но в конечном итоге должен заменить distutils в стандартной библиотеке Python и стать де-факто решением для упаковки Python.

Надеюсь, все это помогло прояснить ситуацию! Удачи.

+0

спасибо за обзор, это было полезно. Одно замечание, рассматривающее каталог 'site-packages', в дополнение к ожидаемому, есть также несколько файлов' .pth', которые я предполагаю, являются метаданными easy_install? – Amro

+1

@Amro: yes, потому что easy_install помещает код Python каждого дистрибутива в отдельный zipfile или каталог, он должен сделать некоторый хакерство sys.path, чтобы сделать их доступными для всех. setuptools.pth и easy-install.pth делают этот хакер. –

+0

Я вижу, я думаю, это необходимо, чтобы мы имели несколько версий одного и того же модуля без конфликтов .. Еще раз спасибо – Amro

0

Я использую окна и питон. Это несколько разочаровывает, потому что pip не всегда работает, чтобы устанавливать вещи. Python движется к pip, поэтому я все еще использую его. Пип приятно, потому что вы можете удалить предметы и использовать

pip freeze > requirements.txt 
pip install -r requirements.txt 

Еще одна причина, мне нравится пип для виртуальных сред, таких как venv с питоном 3.4. Я нашел, что venv намного проще использовать в окнах, чем virtualenv.

Если вы не можете установить пакет, вы должны найти для него двоичный файл. http://www.lfd.uci.edu/~gohlke/pythonlibs/

Я нашел эти двоичные файлы очень полезными.

Pip пытается создать нечто, называемое колесом для двоичных установок.

pip install wheel 
wheel convert path\to\binary.exe 
pip install converted_wheel.whl 

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

Смежные вопросы