Управление пакетами Python при помощи easy_install

    Инструмент easy_install является модулем набора расширений к distutils языка Python — setuptools. Согласно официальной документации «Easy Install — это модуль Python (easy_install), идущий в комплекте библиотеки setuptools, которая позволяет автоматически загружать, собирать, устанавливать и управлять пакетами языка Python». Пакеты носят название «eggs» и имеют расширение .egg. Как правило, эти пакеты распространяются в формате архива ZIP.

    Использование easy_install


    Для начала установим пакет setuptools для Python версии 2.7:
    $ wget pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
    $ sudo sh setuptools-0.6c11-py2.7.egg


    Теперь можно установить любой пакет, находящийся в центральном репозитарии модулей языка Python, который называется PyPI (Python Package Index): pypi.python.org/pypi. Работа с easy_install напоминает работу с пакетными менеджерами apt-get, rpm, yum и подобными. Для примера установим пакет, содержащий оболочку IPython:
    sudo easy_install ipython
    В качестве аргумента указывается либо имя пакета, либо путь до пакета .egg, находящегося на диске. Обратите внимание, что для выполнения установки требуются права суперпользователя, так как easy_install установлен и сам устанавливает пакеты в глобальный для Python каталог site-packages. Установка easy_install в домашнюю директорию производится следующим образом: sh setuptools-0.6c11-py2.7.egg --prefix=~

    Поиск пакета на веб-странице:
    easy_install -f code.google.com/p/liten liten
    Первый аргумент в данном примере — это на какой странице искать, второй — что искать.
    Также предусмотрена возможность HTTP Basic аутентификации на сайтах:
    easy_install -f user:password@example.com/path/

    Установка архива с исходными кодами по указанному URL:
    easy_install liten.googlecode.com/files/liten-0.1.5.tar.gz
    В качестве аргумента достаточно передать адрес архива, а easy_install автоматически распознает архив и установит дистрибутив. Чтобы этот способ сработал, в корневом каталоге архива должен находиться файл setup.py.

    Для обновления пакета используется ключ --upgrade:
    easy_install --upgrade PyProtocols

    Также easy_install может немного облегчить установку распакованного дистрибутива c исходными кодами. Вместо последовательности команд python setup.py install достаточно просто ввести easy_install, находясь в каталоге с исходниками.

    Изменение активной версии установленного пакета:
    easy_install liten=0.1.3
    В данном случае производится откат пакета liten до версии 0.1.3.

    Преобразование отдельного файла .py в пакет .egg

    easy_install -f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
    Это полезно, когда, например, необходимо обеспечить доступ к отдельному файлу из любой точки файловой системы. Как вариант, можно добавить путь к файлу в переменную PYTHONPATH. В этом примере #egg=foo-1.0 — это версия пакета, а foo — это его имя.

    Использование конфигурационных файлов

    Для опытных пользователей и администраторов предусмотрена возможность создания конфигурационных файлов. Значения параметров по умолчанию можно задать в конфигурационном файле, который имеет формат ini-файла. easy_install осуществляет поиск конфигурационного файла в следующем порядке: текущий_каталог/setup.cfg, ~/.pydistutils.cfg и в файле distutils.cfg, в каталоге пакета distutils.
    Пример такого файла:
    [easy_install]

    # где искать пакеты
    find_links = code.example.com/downloads

    # ограничить поиск по доменам
    allow_hosts = *.example.com

    # куда устанавливать пакеты (каталог должен находиться в переменной окружения PYTHONPATH)
    install_dir = /src/lib/python

    Используемые источники:
    peak.telecommunity.com/DevCenter/EasyInstall — официальная документация
    «Python в системном администрировании UNIX и Linux», Ноа Гифт и Джереми М. Джонс
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 28

      +24
      easy_install это хорошо, но pip куда лучше, надо было писать про него… А то easy_install даже удалять пакеты не умеет.
        –1
        Согласен, easy_install отмирающий стандарт, pip наше всио
        +12
        Использую easy_install только для того чтобы установить pip… Он умеет ставить пакеты прямо из систем управления пакетами, например:
        pip install git+git://github.com/frol/django-email-confirmation.git

        Также можно записать в файл список всех пакетов, которые нужны в проекте и потом установить все этим пакеты используя команду:
        pip install -r requirements.txt

        Ну, и конечно можно указывать требуемые версии используя знаки сравнения:
        pip install liten==0.1.3
        pip install liten>=0.1.3
          0
          Интересно.
            0
            Вощем осваивайте и пишите про pip :)
              0
              Ok, как будет время — напишу =)
            0
            А зачем pip устанавливать из easy_install? В репозиториях же есть (python-pip для Ubuntu). Или чтоб версию поновее?
              +2
              Я в систему почти ничего питоньего не ставлю, у меня во всех проектах используются песочницы virtualenv, а там стоит изначально easy_install. Могу написать заметку о способе организации Django-проекта, который я успешно использую. Но я не знаю насколько это полезная заметка будет для хабра…
                +1
                Интересно. Напишите пожалуйста.
                +2
                не убунтой единой…
              +4
              Нынче вместо setuptools рекомендуют distribute ставить.
                0
                а в чём принципиальное отличие?
                  0
                  distribute — форк setuptools, который разрабатывается (в отличие от setuptools, на который забили).
                +3
                Все давно уже ушли на distribute.
                  +1
                  С easy_install/setuptools слишком много проблем, уж лучше pip + «голый» distutils из стандартной библиотеки.
                    –9
                    Мда, от ruby gem, с их
                    — rubygems.org (со специальными инструментами закачки пакетов),
                    — возможностью установки со всяких гитхабов и битбакетов,
                    — bundler,
                    — ресурсом ruby-toolbox.com/
                    это ваше все отстает очень даже (лет на 5).

                    Зато есть куда стремиться))
                      0
                      Например, чем?
                      Что-то, когда я попытался поставить себе RedCarEditor, совсем этого не почувствовал.
                        0
                        причем здесь RedCarEditor?
                          0
                          Это как пример… он ставится с помощью gems… не увидел никакого удобства от gems…
                            –3
                            так себе пример.
                        +2
                        У gems нет никаких преимуществ по сравнению с pip, да и вообще зря вы так, у питона инструментарий в целом богаче.
                          –5
                          У вас есть аналог bundler? Как вы отслеживаете зависимости от версий библиотек? У вас есть репозитории библиотек? У вас есть нормальные веб порталы, современные, а не как будто вернулся в 90-е?

                          Если создавать какой-либо консольный генератор кода, к примеру, то нужно использовать именно руби, т.к. поставить библиотеку очень просто. Хоть так gems.github.com/, хоть просто gem i mygem.
                          В этом плане я понимаю sproutcore и не понимаю qooxdoo, т.к. во втором случае мне надо писать путь до исполняемого файла, чтобы использовать генераторы (что не очень-то удобно). gem i qooxdoo, было бы куда лучше. Вообще руби удобнее использовать для повседневных задач — комфортно. Я не говорю, что на питоне ничего не надо писать, я говорю, что на руби писать удобнее, и gem это одна из тех вещей, что делает написание программ на руби комфортным.
                            +2
                            Вы серьезно хотите в очередной раз начать «этот холивар»? да ещё и в блоге питонистов… Думаю, каждому свое… я для себя выбрал питон, просмотрев все более-менее используемые ЯП и их инструментарии, наборы библиотек и т.д…
                              0
                              Мне интересно как все происходит на других платформах, холивар как способ получения знаний. Под эмоциями кто-то может расскажет, то, о чем ему было бы, как минимум лень писать на трезвую голову.
                        0
                        Всегда было любопытно, какая-нибудь из вышеперечисленных систем управления модулями входит в состав python/python2.7/activepython/etc? Для ruby есть gems, входят в комплект. Соответственно если есть ruby, то всегда можно сделать «gem install что_надо». Необходимость для python предварительно скачивать и устанавливать setuptools огорчает :(
                        • UFO just landed and posted this here
                          • UFO just landed and posted this here
                            +3
                            в debian-based есть пакет python-stdeb. в нём — утилка pypi-install, которая делает из eggа deb-пакет и ставит его.

                            Only users with full accounts can post comments. Log in, please.