Установка пакетов Python в Windows - PullRequest
14 голосов
/ 01 июля 2010

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

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

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

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

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

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

Ответы [ 2 ]

11 голосов
/ 03 июля 2010

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

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

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

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

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

0 голосов
/ 09 июля 2014

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

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

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

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

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

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

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

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

...