Установка пакетов Python в Windows

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

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

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

Еще есть pip, и я до сих пор не уверен, чем он отличается от других.

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

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


person Amro    schedule 01.07.2010    source источник
comment
Связано: Список установленных пакетов сайта python?, Могу ли я установить пакеты Windows Python в virtualenvs?. В последнем упоминается virtualenv, но он действителен и за пределами virtualenv.   -  person Piotr Dobrogost    schedule 12.11.2011
comment
Это должно быть интересно всем, кто попадает на эту страницу: stackoverflow.com/a/14753678/97160   -  person Amro    schedule 11.07.2013


Ответы (2)


Я использую pip, а не в Windows, поэтому я не могу предоставить сравнение с опцией Windows-installer, просто немного информации о pip:

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

Еще пара проектов, о которых вы, возможно, захотите быть в курсе (да, это еще не все!):

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

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

person Carl Meyer    schedule 03.07.2010
comment
спасибо за обзор, это было полезно. Одно замечание, глядя на каталог site-packages, помимо ожидаемого, есть еще пара .pth файлов, которые, как я полагаю, являются метаданными easy_install? - person Amro; 04.07.2010
comment
@Amro: да, поскольку easy_install помещает код Python каждого дистрибутива в отдельный zip-файл или каталог, он должен выполнить некоторые взломы sys.path, чтобы сделать их все доступными для импорта. setuptools.pth и easy-install.pth делают это. - person Carl Meyer; 04.07.2010
comment
Понятно, я полагаю, это необходимо, чтобы у нас было несколько версий одного и того же модуля без конфликтов .. Еще раз спасибо - person Amro; 04.07.2010
comment
@ Амро: да, верно. Пользователи Pip склонны использовать virtualenv, чтобы избежать необходимости параллельной установки нескольких версий, поскольку стиль установки pip не поддерживает это. - person Carl Meyer; 04.07.2010

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

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

Еще одна причина, по которой мне нравится pip, - это виртуальные среды, такие как venv с python 3.4. Я обнаружил, что venv намного проще использовать в Windows, чем virtualenv.

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

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

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

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

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

person justengel    schedule 09.07.2014