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

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

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

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

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

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

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

2 Solutions collect form web for “Установка пакетов Python в Windows”

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

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

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

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

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

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

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

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

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

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

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

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

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

Interesting Posts

Что еще я могу сделать для устранения неполадок пакета, не импортирующего в python, но импорт в ipython, а в virtualenv?

Добавить полярные оси к картезианскому сюжету в Matplotlib

как сказать pylint игнорировать определенные импортные товары?

лучший способ сделать ajax в django

как измерить время выполнения алгоритмов в python

Иногда приложение для фляжки висит

Отправить один файл за раз?

В django Как отображать данные родительской модели с данными дочерней модели в представлении списка изменений?

Программа палиндрома Python не работает

Изменение нескольких элементов массива Numpy с использованием разрезания на Python

Python – ускорить преобразование категориальной переменной в ее числовой индекс

Как я могу получить элементарный логический NOT серии pandas?

Как изменить переменные среды в python?

Может to_representation () в Django Rest Framework получить доступ к нормальным полям

Android Studio: IncorrectOperationException при нажатии кнопки «Добавить в библиотеку» при попытке настроить клиентские библиотеки конечных точек Google Apps

Python - лучший язык программирования в мире.