| Дополнительные особенности easyjnstall |
|
Для большинства тех, кто пользуется сценарием easy_install, вполне достаточно вызывать его с единственным аргументом командной строки, без дополнительных параметров. (К слову сказать, при использовании easy_install с единственным аргументом - именем пакета, этот сценарий просто загрузит и установит этот пакет, как показано в предыдущем примере с IPython.) Тем не менее, иногда бывают случаи, когда неплохо было бы иметь возможности для выполнения дополнительных действий, помимо загрузки пакета из Python Package Index. К счастью, easy_install имеет в запасе несколько оригинальных решений и обладает достаточно высокой гибкостью, чтобы предоставить целый набор дополнительных возможностей. Поиск пакетов на веб - страницах Как было показано ранее, easy_install может отыскивать пакеты в центральном репозитарии и автоматически устанавливать их. Но кроме этого он имеет возможность устанавливать пакеты любыми другими способами, которые только можно себе представить. Ниже приводится пример того, как выполнить поиск пакета на веб-странице и установить или обновить пакет по имени и номеру версии:
В данной ситуации на странице http://code.google.eom/p/liten/ имеется пакет .egg для Python 2.4 и Python 2.5. Ключ -f сценария easy_in-stall определяет адрес страницы, где требуется отыскать пакет. Сценарий отыскал оба пакета и установил версию для Python 2.4, как наиболее соответствующую. Достаточно очевидно, что это очень мощная особенность, так как easy_install не только отыскал ссылку на пакет, но и обнаружил наиболее подходящую версию. Установка дистрибутива с исходными текстами по заданному URL Теперь мы попробуем автоматически установить дистрибутив с исходными текстами по известному адресу URL:
Мы передали сценарию easy_install адрес местоположения сжатого тарболла. Он обнаружил, что должен установить дистрибутив с исходными текстами, причем нам не пришлось явно сообщать ему об этом. Это очень интересный способ установки, но, чтобы он работал, в корневом каталоге дистрибутива должен иметься файл setup.py. Например, к моменту написания этих строк, если разработчик создаст несколько уровней вложенности каталогов, попытка выполнить установку такого пакета потерпит неудачу. Установка пакетов , расположенных в локальной или в сетевой файловой системе Ниже приводится пример установки пакета .egg, находящегося в локальной файловой системе или на смонтированном томе NFS:
Кроме всего прочего существует возможность устанавливать пакеты, находящиеся в смонтированном каталоге NFS или в локальном разделе. Это может быть очень удобно при распространении пакетов в окружении *nix, особенно когда имеется несколько машин, которые должны быть синхронизированы друг с другом по версиям программного кода, работающего на них. Каждый клиент мог бы с помощью такого демона проверять наличие обновлений в центральном репозитарии пакетов. При обнаружении новой версии он мог бы автоматически выполнять обновление. Обновление пакетов Еще одна область применения easy_install - обновление пакетов. В следующих нескольких примерах демонстрируется установка и обновление пакета CherryPy. Сначала устанавливается версия CherryPy 2.2.1:
Теперь посмотрим, что произойдет, если предложить сценарию easy_in-stall попытаться установить пакет, который уже был установлен:
После установки некоторой версии пакета можно обновить его до более свежей версии, явно указав, какую версию нужно загрузить и установить:
Обратите внимание: в данном примере мы не использовали ключ --upgrade. В действительности этот ключ необходим, только если у вас уже установлена некоторая версия пакета и вы хотите обновить его до самой последней версии. Далее мы обновляем пакет до версии CherryPy 3.0.0, используя ключ --upgrade. В данном случае использовать ключ --upgrade было совершенно необязательно:
Если использовать ключ --upgrade, не указывая номер версии, обновление будет выполнено до самой последней версии пакета. Обратите внимание: действие команды в этом случае отличается от действия команды easy_install cherrypy. Команда easy_install cherrypy обнаружит, что ранее уже была установлена некоторая версия пакета и поэтому никаких действий предпринимать не будет. В следующем примере произойдет обновление пакета CherryPy до самой последней версии:
Теперь у нас установлена версия CherryPy 3.1.ОbЗ. Если теперь попробовать выполнить обновление до версии, больше чем 3.0.0, никаких действий предприниматься не будет, так как у нас уже установлена такая версия:
Установка распакованного дистрибутива с исходными текстами в текущем рабочем каталоге Несмотря на всю свою тривиальность, такой способ установки может оказаться полезным. Вместо того чтобы следовать через процедуру python setup, py install, вы можете просто ввести следующую команду (для этого требуется меньше вводить с клавиатуры, поэтому это будет ценный совет для ленивых):
Извлечение дистрибутива с исходными текстами в заданный каталог Следующий пример может использоваться для поиска дистрибутива с исходными текстами или пакета по указанному URL с последующей распаковкой его в заданный каталог:
Это достаточно удобный прием, так как он позволяет с помощью easy_install поместить дистрибутив с исходными текстами в требуемый каталог. Так как в процессе установки пакета с помощью сценария easy_install не всегда устанавливается все его содержимое (например, документация или примеры программного кода), это отличный способ узнать, что входит в состав дистрибутива. В этом случае easy_install только лишь скопирует файлы из дистрибутива. Если вам потребуется установить пакет, вам нужно будет запустить сценарий easy_install еще раз. Изменение активной версии пакета В этом примере предполагается, что у вас уже установлен пакет liten версии 0.1.3 и при этом была установлена некоторая другая версия liten. Кроме того, предполагается, что «активной» является эта другая версия. Ниже показано, как можно активировать версию:
Этот прием работает как в случае перехода к использованию более старой версии, так и в случае возврата к более новой версии пакета. Преобразование отдельного файла . ру в пакет . egg Ниже показано, как преобразовать обычный пакет Python в пакет .egg (обратите внимание на ключ -f):
Эта команда делает в точности то же самое, что и предыдущий пример, только в этом случае создается пакет с именем foofoo, а не virtualenv. Какое имя вы выберете для своего пакета - полностью ваше дело. Этот прием пригодится, когда необходимо упаковать единственный файл .ру в пакет .egg. Иногда этот метод может оказаться лучшим способом, когда необходимо обеспечить доступ к ранее распакованному отдельному файлу из любой точки файловой системы. Как вариант, можно было бы добавить путь к требуемому файлу в переменную окружения PYTHONPATH. В этом примере мы получаем из основного каталога проекта сценарий virtualenv. ру, упаковываем его и указываем нашу собственную версию и метку к ней. В строке URL подстрока #egg=vir-tualenv-1.0 просто определяет имя пакета и номер версии, выбранные нами для этого сценария. Аргумент, который следует за строкой URL, определяет имя создаваемого пакета. В этом аргументе желательно использовать имена, которые не противоречили бы строке URL, потому что мы предписываем easy_install установить пакет с тем же именем, что и созданный. Даже при том, что было бы желательно указывать непротиворечивые имена, вы не должны чувствовать себя обязанными сохранять название пакета в соответствии с названием модуля. Например: Аутентификация на сайтах , доступ к которым защищен паролем В практике может возникнуть ситуация, когда вам потребуется установить пакет .egg с веб-сайта, где требуется пройти аутентификацию, прежде чем будет разрешено загружать с него какие-либо файлы. В таком случае можно указать имя пользователя и пароль прямо в строке URL, как показано ниже:
Вы можете заниматься на работе своим собственным проектом, и вам не хотелось бы, чтобы ваши коллеги узнали о нем. (Разве не все занимаются этим?) Один из способов передать свои пакеты коллегам «из-под полы» заключается в том, чтобы создать простой файл .htaccess и затем выполнять процедуру аутентификации в сценарии easy_install. Использование конфигурационных файлов Для опытных пользователей в арсенале easy_install имеется еще один прием. Значения параметров по умолчанию можно задать с помощью конфигурационного файла, который имеет формат ini-файлов. Для системного администратора это особенно удачная возможность, так как позволяет определять настройки клиентов, использующих сценарий easy_install. Параметры конфигурации будут отыскиваться сценарием easy_install в следующих файлах и в следующем порядке: те-кущий_рабочий_каталог/'setup.cfg, ~/.pydlstutlls.cfg и в файле dlstu-tils.cfg, в каталоге пакета dlstutils. Что можно добавить в этот конфигурационный файл? Обычно здесь определяются два параметра: сайт(ы) в локальной сети, откуда можно загружать пакеты, и нестандартный каталог установки пакетов. Ниже показано, как может выглядеть файл конфигурации для easy_install:
В этом конфигурационном файле, который мы могли бы назвать, например, ~/.pydlstutils.cfg, определяется адрес URL для поиска пакетов, разрешается искать пакеты только в домене example.com (и в под-доменах) и, наконец, указывается, куда должны помещаться пакеты при установке. Коротко о дополнительных особенностях easyjnstall Этот раздел не может служить заменой всеобъемлющей официальной документации с описанием сценария easy_install, его цель состояла лишь в том, чтобы обозначить некоторые основные особенности, которые могут использоваться опытными пользователями. Сценарий easy_install продолжает активно разрабатываться, поэтому будет нелишним чаще обращаться на страницу http://peak.telecommunity.com/ DevCenter/Easy Install за обновлениями в документации. Кроме того, существует почтовая рассылка, она называется dlstutils-sig (где sig происходит от special interest group - группа с особыми интересами), где обсуждаются все проблемы, связанные с распространением программного кода. Подпишитесь на рассылку по адресу http://mail.python.org/ mailman/llstinfо/dlstutils-sig, и вы сможете посылать свои сообщения об обнаруженных ошибках и получать помощь, касающуюся использования easy_install. Наконец, выполнив команду easy_install --help, вы обнаружите еще большее число параметров, о которых мы даже не упоминали здесь. Весьма вероятно, что какая-либо особенность, которая вам необходима, уже реализована в easy_install.
Related Articles
Set as favorite
Bookmark
Email This
Hits: 158 Комментарии (0)RSS feed CommentsНаписать комментарий |