Установка пакетов 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 

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

  • Как подавить PEP440Warning от setup.py?
  • Каковы наилучшие методы для создания распределений Python (яйца) в (и для) нескольких операционных системах
  • Как динамически добавлять и загружать точки входа?
  • Python: pip устанавливает подпакеты в корневом каталоге
  • Запуск теста Django с помощью теста setup.py и токсичности
  • Cx_Freeze не может найти pkg_resources /*.* '
  • Зачем использовать pip над easy_install?
  • Как запускать пост-сборку с помощью setuptools / distutils
  •  
    Interesting Posts for Van-Lav

    Есть ли эквивалент yaml.safe_load в Ruby?

    Проблемы с созданием при добавлении метода `__str__` для повышения класса Python C ++

    Веб-камера: libv4l2 & VIDIOC_DQBUF: нет такого устройства

    Используя Python для входа на сайт, заполните форму и выйдите из нее.

    Matplotlib: Как создавать изображения вместо точек?

    Передать kwargs с недопустимыми параметрами пары ключ = значение для функции

    Python subprocess.Popen "OSError: Невозможно выделить память"

    uwsgi выдает ошибку ввода-вывода, вызванную uwsgi_response_write_body_do сломанной трубой

    Посмотрите, как исправить вычисление столбцов в Python readline, если использовать приглашение цвета

    Упаковка OpenCV с приложением python

    Использование Cython с Asyncio (Python 3.4)

    Python добавляет дни в эпоху

    Тесты не преобразуются на 2to3 в setup.py?

    Проверка версии интерпретатора Python при выполнении скрипта с недопустимым синтаксисом

    Python словарь, который отображает строки в набор строк?

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