= 2. Установка = Что требуется сделать: Начало работы на Windows Vista. Pylons написан на языке Python и спроектирован для работы на любой платформе, которая поддерживает новую версию Python. Поэтому он может использоваться на платформах Windows, Mac OS X, Linux, BSD и многих других. Поскольку Python является интерпретируемым языком, приложения Pylons, которые Вы пишете для одной платформы, могут запускаться на других платформах без каких-либо изменений. В настоящее время существует довольно много различных способов установки Pylons в зависимости от Ваших потребностей, но три самых главных средства, которые используют большинство разработчиков Pylons, это: * Виртуальная среда Python * Программа easy_install * Каталог программных пакетов Python В этой главе мы рассмотрим, что такое виртуальная среда Python, перед тем как обратим наше внимание на каталог программных пакетов Python и программу easy_install. После того как мы запустим установку Pylons и выполним ее, мы рассмотрим, как устанавливать пакеты с расширениями C или C++, такие как драйверы баз данных для MySQL, PostgreSQL и SQLite. Как только у Вас появится полное понимание процессов установки, используемых Pylons, мы обратим наше внимание на сам Python и рассмотрим все тонкости, которые Вам нужно будет знать на конкретной платформе. {{{#!wiki note '''Замечание''' Если у Вас еще нет установленной копии Python, возможно, Вы захотите сразу перейти к заметкам по отдельным платформам, которые находятся дальше в этой главе, для того чтобы узнать, как установить последнюю версию Python, например, 2.5 или 2.6, на Вашу платформу, но поскольку почти все платформы, кроме Windows, уже поставляются с последней версией, большинство из вас сможет сразу же создать виртуальную среду Python. }}} == Быстрый запуск == Pylons действительно легко установить. Если Вы не так заинтересованы в подробностях, а просто хотите изучить и выполнить установку Pylons на Linux как можно быстрее, нижеследующие этапы покажут Вам, как это сделать. Шаги, характерные для Windows и Mac OS, описаны в следующих разделах. * Установите скрипт virtualenv.py с http://pylonsbook.com/virtualenv.py (Debian, и другие дистрибутивы имеют пакет python-virtualenv, подготавливающий /usr/bin/virtualenv, который Вы можете использовать в качестве замены, если для Вас это легче.) * Создайте виртуальную среду Python в каталоге под названием env, так что пакеты, которые Вы устанавливаете для Pylons, не будут мешать каким-либо другим программам, использующим Python в Вашей системе. CD (смените директорию) на ту, где Вы желаете разместить каталог env, копируя туда скрипт virtualenv.py. Хорошим местоположением может быть Ваша домашняя директория: {{{ python virtualenv.py --no-site-packages /home/james/pylonsenv }}} * Используйте программу easy_install (которая была автоматически установлена в Вашу виртуальную Python среду упомянутой выше командой) для установки Pylons: {{{ cd /home/james pylonsenv/bin/easy_install "Pylons==0.9.7" }}} Пользователям Windows нужно использовать Scripts вместо bin в упомянутой выше команде, но все подробности будут разъяснены позже в указаниях конкретно по Windows. После завершения установки Вам следует всегда использовать программы в env/bin вместо скриптов в системной установке Python. Например, там, где примеры в книге определяют что-то вроде этого: {{{ paster serve --reload development.ini }}} на самом деле Вам нужно напечатать следующее, чтобы выполнить команду из виртуальной Python среды: {{{ env/bin/paster serve --reload development.ini }}} Если Вы не совсем понимаете смысла установки, описанной выше, пожалуйста, прочитайте оставшуюся часть главы с полной подробной информацией. == Шаг за шагом == == Каталог программных пакетов Python == Все Python пакеты могут быть загружены в специальной части веб-сайта Python, известного как каталог программных пакетов Python (PyPI). Наряду с предоставлением самих пакетов, каталог программных пакетов Python также содержит информацию о каждом пакете, такую как автор, домашняя страница проектов и описание проекта. Python пакеты могут содержать исходный Python код, конфигурационные файлы, файлы данных, C или C++ расширения и мета-данные о пакете. Каталог программных пакетов Python можно найти по адресу http://pypi.python.org, но большую часть времени Вам не нужно заботиться о PyPi, потому что скрипт easy_install берет на себя все, включая поиск пакета в каталоге программных пакетов Python, получение последней совместимой версии и установку пакета и его зависимостей. В части 3 книги Вы узнаете, как объединить свои Pylons приложения в пакет и автоматически загрузить их в PyPI, но в данный момент Вам нужно только знать, что PyPI – это основное место, где можно найти программное обеспечение Python. == Виртуальные Python среды == Виртуальная среда – это изолированная Python среда, настроенная таким образом, что библиотеки не влияют на программы вне ее, что делает ее хорошей альтернативой для экспериментирования с новыми пакетами или для развертывания различных программ с конфликтными требованиями библиотек. Вы также можете создать виртуальную Python среду и установить в нее программное обеспечение, не требующее привилегий root или администратора, что делает это очень полезным способом для установки Pylons в коллективную среду. Настоятельно рекомендуется устанавливать Pylons таким образом, если Вы используете его в первый раз. Есть ряд инструментов, доступных в Python сообществе для создания виртуальной Python среды, но два наиболее популярных – это virtualenv.py и Buildout. Buildout популярен в Zope сообществе, потому что обладает множеством возможностей, которые помогают Вам управлять всеми сторонами развертывания, но он может быть довольно сложным. virtualenv.py является более легким решением, разработанным просто для поддержки создания виртуальной Python среды, что делает его идеальным для большинства случаев использования, включая Pylons. Для создания виртуальной среды Вам потребуется скрипт самонастройки virtualenv.py. Актуальная версия этого скрипта на время написания книги доступна по адресу http://pylonsbook.com/virtualenv.py, и многие Linux дистрибутивы предоставляют python-virtualenv пакет, но вместо этого Вы, наверное, захотите использовать новейшую доступную версию. Чтобы получить последнюю версию, зайдите в каталог программных пакетов Python Package и поищите virtualenv. Загрузите .tar.gz версию программного обеспечения и извлеките virtualenv.py файл из дистрибутива. Вы можете сделать это так, как тут, используя команды, подобные этим, но не забудьте обновить их до версии, которую хотите загрузить: {{{ wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.1.tar.gz tar zxfv virtualenv-1.1.tar.gz cp virtualenv-1.1/virtualenv.py ./ }}} Можете теперь удалить старые файлы, если хотите: {{{ rm -r virtualenv-1.1 rm virtualenv-1.1.tar.gz }}} Пользователям Windows потребуется загрузить файл вручную, так как wget не установлен в системе. И использовать такой инструмент, как 7- zip с http://www.7-zip.org для извлечения файлов. Пользователям Mac и некоторым пользователям Linux понадобится использовать curl -O вместо wget для загрузки файла. {{{{#!wiki note '''Замечание''' Если Вы используете систему, которая уже имеет установленную программу easy_install, то вместо этого можете установить virtualenv автоматически вот так: {{{easy_install virtualenv}}} }}}} Скрипт virtualenv.py затем будет доступен в bin Python установки или директории Scripts. Какой бы способ Вы ни выбрали для получения скрипта virtualenv.py, теперь Вы можете использовать его для создания изолированной виртуальной Python среды для хранения Pylons библиотек отдельно от других библиотек в Вашей системе. Теперь Вы готовы к созданию виртуальной среды Python. Вот как это выглядит в Windows: {{{ C:\>C:\Python25\python.exe "C:\Documents and Settings\Administrator\Desktop\virtualenv-1.1\virtualenv.py" C:\env New python executable in C:\env\Scripts\python.exe Installing setuptools...............................done. }}} Пользователям Windows не следует создавать виртуальную среду python, используя в названии пути пробел. Иначе Вы можете увидеть ошибку, подобную этой: {{{ ValueError: The executable 'C:\\Documents and Settings\\Administrator\\Desktop\\env\\Scripts\\python.exe' contains a space, and in order to handle this issue you must have the win32api module installed }}} Следуя подсказке об ошибке, установка win32api модуля с http://sourceforge.net/project/showfiles.php?group_id=78018 решает проблему. На Linux платформах Вам следует убедиться в наличии установленного пакета python-dev для Вашей версии Python, иначе скрипт virtualenv.py может пожаловаться на включаемые файлы. Стоит также отметить для продвинутых пользователей, что виртуальная среда Python не обязательно совместима с настраиваемым distutils.cfg файлом. Не каждый выбирает использование виртуальной Python среды. Если Вы опытный пользователь, то вполне возможно запускать несколько приложений Pylons из системной установки Python. Однако использование виртуальной Python среды помогает Вам избежать проблем зависимостей. Если Вы решите не пользоваться виртуальной средой Python, Вам потребуется устанавливать программу easy_install самостоятельно. Скачайте файл ez_setup.py с http://peak.telecommunity.com/dist/ez_setup.py и затем выполните команду: {{{ $ python ez_setup.py }}} == Работа с easy_install == Теперь, когда Ваша Python среда настроена, мы можем обратить внимание на easy_install, Python программу, которая автоматически выбирает пакеты из PyPI, а также любые имеющиеся у них зависимости. Затем она устанавливает их в ту же Python среду, в которую установлена сама программа easy_install. Программа easy_install на самом деле является частью модуля под названием setuptools и устанавливается автоматически с помощью скрипта virtualenv.py, который Вы только что выполнили выше. Полную документацию на !EasyInstall можно найти по адресу http://peak.telecommunity.com/DevCenter/EasyInstall, и хотя это мощный инструмент с многочисленными опциями для продвинутых пользователей, его основное использование является очень простым. Чтобы показать Вам особенности основных способов его использования, мы пробежимся по нескольким примерам. Чтобы установить последнюю версию пакета !PasteDeploy, используемую Pylons и его зависимостями, Вам нужно просто выполнить команду: {{{ $ easy_install PasteDeploy }}} Когда Вы запустите эту команду, !EasyInstall зайдет в каталог программных пакетов Python и на страницу загрузки Pylons, чтобы найти наиболее подходящую версию каждого из требуемых пакетов, и установит каждый из них по очереди. Пакет !PasteDeploy не имеет никаких зависимостей, но если бы имел, !EasyInstall осуществил бы поиск наиболее подходящих версий пакетов зависимостей по каталогу программных пакетов Python и автоматически загрузил бы их тоже. Если Вы используете виртуальную Python среду, Вам нужно добавить путь к bin директории виртуальной среды перед командой easy_install. Если Вы установили виртуальную среду Python в директорию env, как описано выше, то команда будет такой: {{{ $ env/bin/easy_install PasteDeploy }}} В Windows такие команды, как easy_install, часто являются реальными Windows приложениями, так что Вы можете добавить к ним расширение .exe, если предпочитаете. Виртуальная Python среда в Windows устанавливает программы в директорию Scripts вместо директории bin, так что в Windows команда будет такой: {{{ $ env/Scripts/easy_install.exe PasteDeploy }}} {{{#!wiki important '''Внимание''' Остальные главы в книге предполагают, что Вы всегда будете добавлять правильный путь к скриптам виртуальной Python среды и расширение .exe, если это требуется на Вашей платформе. }}} Фактически все пакеты в каталоге программных пакетов Python могут быть установлены так же, как мы устанавливали ранее пакет !PasteDeploy, просто путем указания имя пакета в качестве аргумента для команды easy_install. == Установка Pylons == Теперь, когда у Вас есть виртуальная Python среда, и Вы знаете, как использовать easy_install на своей платформе, настало время установить сам Pylons. Pylons состоит из множества различных пакетов, все из которых требуют установки для работы Pylons. Сам Pylons распространяется по лицензиям с открытым исходным кодом, перечисленным в предисловии книги. Все его зависимости также имеют открытый исходный код, но если Вы интересуетесь подробностями лицензий, Вам следует проверить каждый пакет. Вместо того чтобы предоставить Вам установку каждого пакета по отдельности, Pylons использует систему !EasyInstall, о которой Вы только что узнали, для автоматической загрузки и установки всех зависимостей. В командной строке запустите эту команду для установки последней версии Pylons и его зависимостей: {{{ $ easy_install Pylons }}} В конце процесса Вы должны иметь последнюю версию Pylons и всех его зависимостей в установленном виде и готовыми к использованию. {{{#!wiki tip '''Совет''' Если Вы пользователь Windows, и применяете Python 2.3, Вам также понадобится установить пакет под названием subprocess, который Вы можете скачать с http://www.pylonshq.com/download/subprocess-0.1-20041012.win32-py2.3.exe. Пользователи Python 2.4 и выше уже имеют этот пакет. }}} Между прочим, Pylons может не поддерживать Python 2.3 еще долгое время из-за его отсутствия декораторной поддержки, поэтому будет целесообразно сделать обновление до более поздней версии наподобие Python 2.5. Если Вы хотите убедиться в том, что у Вас последняя версия Pylons, можете воспользоваться этой командой: {{{ $ easy_install -U Pylons }}} Это установит последнюю версию, если она еще не присутствует, или обновит Pylons до последней версии, если старая версия уже установлена. Если Вы используете виртуальную Python среду, то увидите, что модуль pylons установлен в виртуальную среду: {{{ C:\>C:\env\Scripts\python.exe Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pylons >>> }}} НО: Если Вы попытаетесь сделать то же самое с системным исполняемым файлом Python, то получите ошибку, потому что виртуальная установка Python отделила пакеты от главной системы Python так, как мы и ожидали: {{{ C:\>C:\Python25\python.exe Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pylons Traceback (most recent call last): File "", line 1, in ImportError: No module named pylons >>> }}} Теперь, когда Вы успешно установили Pylons и все его зависимости, можете переходить к главе 3 ”Начало работы”, но если Вы действительно хотите глубокого понимания, то читайте дальше! == Понимание Eggs == Большинство нового Python программного обеспечения, включая Pylons и все его зависимости, распространяется в виде eggs. Eggs – это новый пакетный формат, который обладает многими дополнительными возможностями по сравнению со старыми distutils пакетами, включая добавление информации о зависимостях, требующейся для программы easy_install, с которой мы приучаемся работать. {{{#!wiki tip '''Совет''' Если Вы до этого не сталкивались с egg форматом, можете представить их аналогичными .jar файлам в Java или .gem файлам в Ruby. }}} Разработчики иногда слегка опасаются использовать !EasyInstall, потому что ощущают, что в нем есть что-то магическое. На самом деле Python eggs – это просто zip-файлы модулей Python с несколькими добавленными файлами мета-данных, и если Вы переименуете их в .zip, то можете изучить их содержимое. Модульные zip-файлы поддерживаются в Python, начиная с версии 2.3, так что в использовании zip-файла вместо структуры каталогов нет ничего нового. Некоторые из более продвинутых возможностей eggs, например точки входа, рассматриваются в части 3 книги. Одна действительно полезная возможность при использовании easy_install - это --always-unzip. Она заставляет !EasyInstall извлекать все файлы из egg-пакетов, так что Вы можете просматривать их исходные файлы в файловой системе, чтобы понять, как действительно работают содержащиеся в них пакеты. Крайне удобно, если Вы любознательный разработчик! Вы можете установить это по умолчанию в виртуальной Python среде путем изменения env/lib/python2.5/distutils/distutils.cfg на: {{{ [easy_install] zip_ok = 0 }}} Далее в книге мы рассмотрим, как можно создавать свои собственные egg-файлы из Pylons приложения. == Темы для продвинутых пользователей == == Активация и деактивация виртуальной Python среды == Если Вы регулярно работаете с файлами в virtualenv виртуальной среды Python, то необходимость набирать path/to/env/bin/ часть перед каждым скриптом, который Вы хотите выполнить, может стать утомительной. Вы можете решить эту проблему путем активации среды, в которой на данный момент работаете. Это помещает исполняемые файлы виртуальной среды Python вначале в переменную окружения PATH, так что Вы можете запускать их без ввода полного пути к виртуальной среде Python. Вот как сделать это в Windows: {{{ C:\Test>..\env\Scripts\activate.bat (env) C:\Test>python Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pylons >>> }}} После того, как Вы активируете виртуальную среду Python с помощью activate.bat, скрипты в виртуальной среде получат превосходство перед обычными системными скриптами. В примере выше Вы можете видеть, что запущенный на выполнение python на самом деле запускает версию в виртуальной среде Python, куда установлен Pylons, а не главный системный Python. То же верно и для других доступных скриптов. Заметьте, как меняется командная строка, показывая, что Вы находитесь в виртуальной среде Python. Вы можете деактивировать ее, напечатав deactivate.bat, и все вернется в обычное состояние: {{{ (env) C:\Test>..\env\Scripts\deactivate.bat C:\Test> }}} В Linux и Mac OS X Вы активируете среду, используя подобный этому Bash script: {{{ $ source ~/env/bin/activate }}} Этот скрипт работает в Bash и zsh и, возможно, многих других Bourne-совместимых командных процессорах. Он не будет работать на csh или tcsh. Если он не работает в Вашем не являющемся Bash командном процессоре, Вам придется внести в него изменения для соответствия синтаксису Вашего командного процессора. Не забывайте о слове "source"! Это слово заставляет скрипт выполняться в текущем командном процессоре вместо запуска нового процесса, так что скрипт может изменять текущий PATH командного процессора и другие переменные. Старейшие командные процессоры Bourne использовали "." вместо "source". Заметьте, что после активации командного процессора строка меняется на "(env)$" для того, чтобы напомнить, в какой среде Вы находитесь. Это удобно, если Вы прекращаете работу в нескольких виртуальных средах в различных окнах. Если Вы хотите деактивировать командный процессор, то введите эту команду в Linux и Mac OS X: {{{ deactivate }}} Тогда пути вернутся в обычное состояние, и строка исчезнет. {{{#!wiki important '''Внимание''' Существует одна потенциальная проблема, которую нужно иметь в виду, касающаяся активации/деактивации. Командный процессор хранит путь каждой команды в памяти, так что ему не нужно искать этот путь снова, когда команда перезапущена. Это пренебрегает изменениями, внесенными активацией в среду, так что процессы активации/деактивации пытаются очистить этот кэш, но иногда они терпят неудачу. Результатом является то, что вы вводите имя команды, а получаете "неверную" команду. Чтобы убедиться на 100%, что Вы получаете правильную команду, запустите "which python" (или "which easy_install" и т.д.), и командный процессор напечатает полный путь команды, которую выполнит. Если это неверная команда, выполните команду однажды, введя полный путь, и это обновит кэш памяти, так что можно будет использовать ту версию команды. }}} Если Вы сомневаетесь, возможно, стоит использовать исполняемые файлы напрямую без магической активации и деактивации. == Опции virtualenv == Скрипт virtualenv.py имеет две интересные опции командной строки, которые Вы можете использовать, создавая виртуальную среду Python: {{{ --no-site-packages }}} не делать глобальную директорию сайт-пакетов доступной в виртуальной среде {{{ --clear }}} удалить любые предыдущие установки virtualenv и начать все с нуля В директивах выше мы использовали опцию --no-site-packages, но Вы можете опустить эту опцию, если предпочитаете, чтобы виртуальная Python среда также имела доступ ко всем пакетам, уже установленным в системную среду Python. == Выбор версий пакета с помощью EasyInstall == !EasyInstall позволяет Вам очень точно указывать версию отдельной части программного обеспечения, которую Вы хотите установить. Давайте снова применим пакет !PasteDeploy в качестве примера. Для того чтобы установить последнюю версию пакета !PasteDeploy, используемого Pylons и его зависимостями, Вам потребуется просто запустить эту команду, как мы уже рассматривали: {{{ $ easy_install PasteDeploy }}} Для установки !PasteDeploy версии 1.7 Вам нужно будет использовать: {{{ $ easy_install "PasteDeploy==1.7" }}} У Вас могут также быть более сложные требования к версии. Например, для установки версии PasteDeploy в промежутке между 1.5 и 1.7, включая граничные значения, Вы можете сделать следующее: {{{ $ easy_install "PasteDeploy>=1.5,<=1.7" }}} !EasyInstall также может быть использован для обновления пакетов. Вы используете команду easy_install аналогичным образом, но указываете флаг –U, чтобы заставить !EasyInstall обновить пакет. Отметьте, как Вы по-прежнему можете указывать требования к версии даже во время обновления: {{{ $ easy_install -U "PasteDeploy>=1.5,<=1.7" }}} Конечно, Вы можете также использовать !EasyInstall, чтобы напрямую устанавливать eggs, которые находятся в Вашей локальной системе. Например, для установки egg Python 2.4 для !PasteDeploy Вы можете выдать эту команду: {{{ $ easy_install PasteDeploy-1.7-py2.4.egg }}} Наконец, !EasyInstall может также использоваться для установки исходных дистрибутивов, которые были созданы с помощью старого модуля distutils, который является частью дистрибутива Python и который !EasyInstall предназначен заменить: {{{ $ easy_install http://pypi.python.org/packages/source/P/PasteDeploy/PasteDeploy-1.5.tar.gz }}} В этом случае !EasyInstall сначала создает.egg файл из исходного дистрибутива, а затем устанавливает его. Заметьте, что !EasyInstall также успешно берет локальные файлы или URL в качестве аргументов. {{{#!wiki tip '''Совет''' Сам !EasyInstall работает за счет сохраняемого файла в установочной директории Python lib/site-packages, называемого easy_install.pth. Python заглядывает в .pth файлы при запуске и добавляет любые модульные zip-файлы или указанные пути во внутренний sys.path. !EasyInstall просто сохраняет файл easy_install.pth так, что Python сможет найти устанавливаемые им пакеты. }}} Если Вы когда-нибудь захотите удалить пакет, простейшим способом будет удалить его запись из файла easy_install.pth. Однако вам никогда не потребуется удалять пакет, так как !EasyInstall всегда будет использовать последний, установленный Вами, по умолчанию. == Установка прокси-сервера == Если Вы пытаетесь установить Pylons, используя easy_install, и получаете такое сообщение, как ошибка: Ошибка загрузки: (10060, 'Блокировка операции по превышению лимита времени'), это может быть по причине того, что Ваш компьютер закрыт HTTP-прокси, и поэтому easy_install не может загрузить файлы, которые ему требуются. Для того чтобы easy_install мог загрузить файлы, Вам нужно сообщить ему, где находится прокси. Вы можете осуществить это путем установки значения переменной окружения HTTP_PROXY. В Linux Вам потребуется напечатать: {{{ export HTTP_PROXY="http://yourproxy.com:port" }}} или если Вам нужна прокси-аутентификация: {{{ export HTTP_PROXY="http://user:password@yourproxy.com:port" }}} В Windows Вам требуется установить: {{{ set HTTP_PROXY=http://your.proxy.com:yourPort }}} После этого Вы сможете снова запустить easy_install Pylons, и на этот раз программа сможет найти файлы. Смотрите следующий раздел для установки Pylons в офлайн режиме, если Вы по-прежнему испытываете трудности. == Устранение проблем EasyInstall == В редких случаях каталог программных пакетов Python падает, но в этих условиях все еще остается возможной установка Pylons и его зависимостей путем указания локальной директории пакетов для альтернативной установки Pylons. Вы можете сделать это так: {{{ $ easy_install -f http://pylonshq.com/download/ Pylons }}} Эта команда заставляет EasyInstall сначала проверить веб-сайт Pylons перед переходом к PyPI. Если он находит ссылки на все, что ему нужно, на указанной странице, ему не потребуется переходить к PyPI совсем. {{{{#!wiki caution '''Примечание''' Если Вы используете более старую версию Pylons, то можете получить пакеты, которые вышли вместе с ней во время выпуска, путем указания желаемой версии и зависящего от версии сайта загрузки Pylons: {{{ $ easy_install -f http://pylonshq.com/download/0.9.2/ "Pylons==0.9.2" }}} Тот же метод может также применяться для установки любых из зависимостей Pylons. }}}} Если Вы совсем не можете подключиться к интернету, то потребуется устанавливать Pylons в офлайн режиме. Загрузите все зависимости Pylons и поместите их в директорию под названием downloads, затем используйте !EasyInstall для установки программного обеспечения из директории, применяя данную команду: {{{ $ easy_install -f downloads/ Pylons }}} Иногда !EasyInstall не может найти пакет, который ищет в каталоге программных пакетов Python. Если эта ситуация возникнет, следует сначала убедиться в том, что у Вас последняя версия setuptools путем выдачи этой команды (флаг -U означает обновить, как мы видели ранее): {{{ $ easy_install -U setuptools }}} Вам придется делать это в Ubuntu 7.04, например, если Вы получили !EasyInstall посредством файла python-setuptools*.deb, а не как часть программы установки виртуальной Python среды, потому что версия в .deb файле слишком старая для Pylons и его зависимостей. После обновления, попробуйте установить Pylons снова, и если одна из зависимостей по-прежнему будет падать, Вам потребуется сначала вручную установить эту зависимость перед очередной попыткой установки Pylons. Другое сообщение об ошибке, с которым Вы можете иногда сталкиваться во время использования !EasyInstall, это pkg_resources.!ExtractionError, в котором говорится: {{{ Can’t extract file(s) to egg cache The following error occurred while trying to extract file(s) to the Python egg cache: [Errno 13] Permission denied: ‘/var/www/.python-eggs’ The Python egg cache directory is currently set to: /var/www/.python-eggs Perhaps your account does not have write access to this directory? You can change the cache directory by setting the PYTHON_EGG_CACHE environment variable to point to an accessible directory. }}} Так как сообщение об ошибке говорит о том, что egg, содержащий модуль, который импортируется pkg_resources (другим модулем, установленным с setuptools и easy_install) требует, чтобы его содержимое было извлечено до того, как модуль может быть использован, но выполняющийся скрипт не имеет прав на извлечение egg в местоположение по умолчанию. Вы можете сменить место, куда извлекаются eggs путем установки переменной окружения PYTHON_EGG_CACHE куда-либо, где приложение имеет права записи. Один из способов сделать это заключается в следующем: {{{#!highlight python import os os.environ['PYTHON_EGG_CACHE'] = '/tmp'}}} Вам потребуется добавить эту строку перед импортом модуля, который падает, и Вы, как правило, воспользуетесь более подходящим размещением, чем /tmp. Если у Вас все еще возникают проблемы, то потребуется провести поиск онлайн или связаться с почтовой рассылкой Pylons по адресу pylons-discuss@googlegroups.com. Две хорошие страницы для начала – это документация !EasyInstall по адресу http://peak.telecommunity.com/DevCenter/EasyInstall и руководство по устранению проблем при установке !TurboGears по адресу http://docs.turbogears.org /1.0/InstallTroubleshooting.!TurboGears 1.0 использует такую же систему установки, как и Pylons, поэтому встречающиеся проблемы зачастую похожи. == Работая с Bleeding Edge == Если Вы хотите использовать версию Pylons, находящуюся в разработке – или даже вносить свой вклад в разработку Pylons – Вы можете установить последнюю bleeding-edge прямо из хранилища Pylons Mercurial. Mercurial – это популярная система контроля ревизий с открытым кодом, написанная на Python, выбор в пользу которой, вместо выбора в пользу Subversion, делают многие проекты, включая Pylons, из-за его распределенного характера и более мощного набора функций. Mercurial подробно документируется в книге Mercurial по адресу http://hgbook.red-bean.com/hgbook.html, но если Вы просто хотите быстро начать работу с ним, то найдете полезным это руководство на Pylons вики: http://wiki.pylonshq.com/display/pylonscookbook/Mercurial+for+Subversion+Users После того как Mercurial будет установлен, Вам потребуется создать идентичные версии Pylons и всех его зависимостей, находящихся в разработке. Отслеживание всех хранилищ и копирование исходных файлов может быть весьма длительным процессом, поэтому разработчики Pylons создали скрипт go-pylons.py для настройки виртуальной среды Python и автоматизации процесса. Скачайте программу для Pylons 0.9.7 с http://www.pylonshq.com/download/0.9.7/go-pylons.py и затем выполните команду: {{{ python go-pylons.py --no-site-packages devenv }}} Скрипт мгновенно выполняет работу и настраивает виртуальную Python среду разработки. Разработчикам под Mac OS X потребуются инструменты разработки Apple, распространяемые с XCode или iPhone SDK. Вы можете также скачать их бесплатно с http://developer.apple.com/technology/xcode.html, но Вам нужно будет зарегистрироваться. {{{{#!wiki important Хотя команда разработчиков Pylons всегда пытается гарантировать, что код в главной линии Pylons функционирует и идет в ногу со временем, нет гарантии, что он будет стабильным. Если Вы выбираете использование версии, находящейся в процессе разработки вместо официального релиза, то следует понимать, что Pylons может повести себя не так, как Вы того ожидаете, и более вероятно будет содержать ошибки, когда будут вводиться новые функции. }}}} == Замечания по отдельным платформам == Сам Pylons работает со всеми версиями Python, начиная с 2.3, но рекомендуется использовать Python 2.4 или выше, потому что некоторые из выпускаемых третьей стороной программных пакетов, которые Вы, возможно, будете использовать во время разработки приложения Pylons application, менее вероятно будут поддерживать более старые версии. Python 2.5 или 2.6 подходят идеально. Следующие разделы описывают, как установить Python на платформы Linux/BSD, Windows и Mac OS X. Также они описывают некоторые подробности относительно других инструментов и программ, которые, возможно, понадобятся на Вашей платформе, а также относительно любых дополнительных шагов, которые Вам потребуется предпринять, или специфических для платформы проблем, которые Вам нужно знать. {{{#!wiki note '''Примечание''' Python поддерживает использование расширений C или C++ для облегчения интеграции с другими библиотеками или для ускорения определенных участков кода. Хотя Вам вряд ли придется когда-нибудь писать свои собственные расширения во время разработки Pylons приложения, Вы можете обнаружить, что некоторые программные пакеты, разработанные третьей стороной, в частности драйверы баз данных, действительно содержат расширения. }}} В отличие от чисто Python пакетов, пакеты, содержащие расширения, требуют компиляции на каждой платформе, на которой выполняются. Большую часть времени бинарная версия определенного пакета уже будет существовать для вашей платформы (особенно если Вы работаете в Windows), но если это не так, расширение может потребовать компиляции. Этап компиляции будет происходить автоматически, но для того, чтобы он заработал, Вам нужно установить подходящую среду разработки. Разделы по установке для платформ Linux/BSD и Mac OS X изложат, как это сделать. == Linux и BSD == Большинство современных Linux и BSD платформ содержат Python как часть их стандартной установки. Вы можете узнать, какая версия Python находится на Вашей платформе, напечатав python в командной строке и прочитав информацию, которая выводится на экран. Если команда python загружает старую версию Python, Вы можете обнаружить, что команды python2.5 или python2.4 загружают более свежие версии. Если Ваша платформа не имеет новой версии Python, Вам потребуется установить бинарную версию любым подходящим для Вашей платформы способом. Например, в Debian Вы будете использовать команду apt-get, в Fedora или RedHat примените RPM, а во FreeBSD будете пользоваться пакетной системой. Компиляция Python напрямую из исходников также проста, и Вы легко можете ее осуществить, если предпочитаете. Сначала скачайте дистрибутив исходников с http://www.python.org/download/source/, а затем извлеките все файлы. Один из извлеченных файлов – это README файл, которые содержит инструкции по сборке для различных платформ. Вы должны следовать инструкциям для Вашей конкретной платформы. Если Вы хотите иметь возможность компилировать пакеты Python с расширениями C или C++, то также потребуется установить среду разработки, которая включает в себя ту же версию GCC, с помощью которой были скомпилированы Python и его зависимости. Некоторые платформы также требуют установки пакета python-dev наряду с остальными. Например, чтобы настроить Debian 4.0 для того, чтобы иметь возможность компилировать расширения Python, Вам потребуется установить данные пакеты разработки: {{{ $ sudo apt-get install python-dev libc6-dev }}} Иногда определенные пакеты требуют компиляции с помощью версии gcc более старой, чем стоит по умолчанию на платформе. В Debian Вы можете установить gcc 2.95 с помощью этой команды: {{{ $ sudo apt-get install gcc-2.95 }}} Чтобы использовать эту более старую версию, Вам нужно будет установить переменную окружения CC перед тем, как пытаться скомпоновать пакет. Способ, которым Вы будете это делать, зависит от Вашего командного процессора, но для Bash потребуется выполнить эту команду: {{{ $ export CC=/usr/bin/gcc-2.95 }}} После того как требуемая версия gcc установлена, !EasyInstall сможет автоматически компилировать любые зависимости из той же командного процессора. Если Вам нужно открыть другой командный процессор, то потребуется проверить то, что переменная CC все еще установлена, и установить ее снова, если необходимо: {{{ $ echo $CC /usr/bin/gcc-2.95 }}} == Mac OS X == Python 2.5 поставляется предварительно установленным на Mac OS X Leopard в комплекте с !EasyInstall , поэтому пользователи Leopard могут сразу же приступать к созданию виртуальной среды Python и установке Pylons. Более старые версии Mac OS X также содержат Python, но включенная версия иногда либо одно-, либо двухлетней давности из-за цикла релизов Apple. Настоятельная рекомендация сообщества "!MacPython" заключается в том, чтобы обновить Ваш Python путем загрузки и установки более новой версии. Более старые версии Mac OS X также поддерживаются. Посетите http://www.python.org/download/mac/ для получения более подробной информации. {{{{#!wiki important '''Внимание''' Стоит знать, что если Вы устанавливаете пакеты в /Library/Python/2.5/site-packages и затем используете virtualenv для установки Pylons в локальную директорию, любые приложения, которые Вы запускаете из локальной директории, не смогут найти файлы по пути /Library/..., поэтому всегда лучше устанавливать все локально. Если Вы столкнетесь с этой проблемой, то можете исправить ее путем запуска !EasyInstall из Вашего virtualenv для каждого из пакетов, которые кажутся отсутствующими. !EasyInstall затем найдет их и добавит в virtualenv файл easy-install.pth. }}}} == Windows == Если Вы используете Windows 95, 98, NT, 2000, ME, XP, 2003 Server или Vista, то можете загрузить установщик Python с http://python.org/download/. На время написания последней версией является Python 2.5.1. После того, как Вы загрузите подходящую версию для Вашей платформы (которая, как правило, будет x86 версией), просто щелкните дважды на файле python-2.5.1.msi и следуйте инструкциям по установке. {{http://python.su/static/images/image002.jpg}} Рисунок 2-2. Установщик Python 2.5, запущенный в Windows XP {{{{#!wiki important '''Примечание''' Для использования установщика система Windows должна поддерживать Microsoft Installer 2.0. Просто сохраните установочный файл на Вашей локальной машине и затем запустите его, чтобы узнать, поддерживает ли Ваша машина MSI. Windows XP и более поздние версии уже имеют MSI, но многие более старые машины также уже имеют установленный MSI. Если Ваша машина не имеет Microsoft Installer, Вы можете загрузить его: Windows 95, 98 и ME платформы используют эту версию: http://www.microsoft.com/downloads/details.aspx?FamilyID=cebbacd8-c094-4255-b702-de3bb768148f&displaylang=en Windows NT 4.0 и 2000 используют данную версию: http://www.microsoft.com/downloads/details.aspx?FamilyID=4b6140f9-2d36-4977-8fa1-6f8a0f5dca8f&DisplayLang=en }}}} В Windows любые скрипты, устанавливаемые пакетами, разработанными третьей стороной, будут помещены в каталог Scripts установки Python, как правило, C:Python25Scripts. По умолчанию, ни эта директория, на главный исполняемый файл Python не находятся в PATH, поэтому Вы не сможете запустить сам Python или любые Python скрипты из командной строки, если сначала не перейдете в правильную директорию или не будете указывать полный путь каждый раз. Для того чтобы это исправить и избавиться от необходимости много печатать в будущем, Вам следует добавить несколько директорий в переменную окружения PATH. К счастью, это просто сделать, так что примеры в этой книге будут предполагать, что Вы правильно установили путь. Конечно, если Вы используете виртуальную среду Python, то следует указать каталог Scripts в виртуальной среде Python вместо системного Python, либо вместо этого можно активировать виртуальную среду Python, как было описано выше в главе. Если Вы используете Windows 95, 98 или ME, то можете сделать следующее: 1. Отредактируйте Ваш C:autoexec.bat файл и добавьте следующую строку в конец файла: 2. set PATH=%PATH%;C:\Python25\;C:\Python25\Scripts 3. Перезагрузите компьютер. Если Вы пользуетесь Windows 2000 или Windows XP, то можете сделать следующее: 1.С рабочего стола или меню “Пуск”, щелкните правой кнопкой по “Моему компьютеру” и выберите “Свойства”. 2.В окне “Свойства системы” нажмите на вкладку “Дополнительно”. 3.В разделе “Дополнительно” нажмите на кнопку “Переменные окружения”. 4.Наконец, в окне “Переменные окружения”, выделите переменную пути в разделе “Системная переменная” и выберите “Редактировать”. Добавьте текст C:\Python25;C:\Python25\Scripts в конец пути. Каждая различная директория должна быть отделена запятой, так что конец Вашего пути может выглядеть примерно так: {{{ C:\Program Files;C:\WINDOWS;C:\WINDOWS\System32;C:\Python25\;C:\Python25\Scripts }}} 5.Вам может понадобиться перезагрузить компьютер для того, чтобы изменения вступили в силу. {{http://python.su/static/images/image004.jpg}} Рисунок 2-3 Настройка PATH в Windows XP Для того чтобы проверить, что Ваша установка сработала и путь настроен правильно, Вам следует выбрать Start->Run... и ввести текст cmd в поле ввода. Когда Вы нажмете OK, загрузится командная строка Windows. После этого Вы сможете запустить Python, набрав python в командной строке. Вы должны увидеть что-то похожее на то, что показано на изображении ниже. {{ http://python.su/static/images/image006.jpg }} Рисунок 2-4 Командная строка Windows запустила Python Если так, то установка сработала. Чтобы выйти из диалогового интерпретатора Python, можете нажать CTRL+z сразу же после нажатия клавиши Enter. {{{#!wiki note '''Совет''' При разработке приложений Pylons Вы обнаружите, что часто будет необходим доступ к командной строке Windows. Очень быстро может стать утомительным загружать командную строку из опции “Выполнить” меню “Пуск”, а затем вручную переходить в каталог, содержащий Ваше Pylons приложение. Чтобы облегчить жизнь, Microsoft выпустил расширение под названием "Open Command Here Powertoy", которое позволяет Вам по щелчку правой кнопкой мыши в директории загрузить командную строку с этим размещением путем выбора Open Command Window Here из меню. Вы можете скачать расширение с http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx }}} Существуют две небольшие сложности, о которых нужно знать при разработке Python приложений в Windows. Первая заключается в том, что пути в Windows используют символ как разделитель путей вместо символа /, используемого на платформах Linux и Mac OS X. Символ рассматривается как экранирующий символ в строках исходного кода Python, так что Вы не можете использовать пути Windows в строках исходного кода без экранирования символов. Вы можете сделать это путем добавления дополнительного символа перед каждым в строке. Например, путь Windows может быть записан так: {{{ my_path = "C:\\Documents and Settings\\James\\Desktop\\Pylons" }}} К счастью, Python также рассматривает символы / в путях на Windows платформе как разделители путей, поэтому Вы также можете записать этот же путь как: {{{ my_path = "C:/Documents and Settings/James/Desktop/Pylons" }}} {{{#!wiki note '''Примечание''' Вместо того, чтобы переписывать различные версии команд для всех Windows, Linux и Mac OS X платформ на протяжении всей книги, мы примем, что Вы установили каталог C:\Python25\Scripts в свой PATH. Также мы будем записывать любые пути, используя символы / вместо символов , поэтому, пожалуйста, отдавайте себе отчет в том, что Вам, возможно, понадобится интерпретировать все это немного по-другому в Windows. }}} Вторая незначительная сложность состоит в том, как Windows рассматривает символы конца строки. На UNIX-подобных платформах символ новой строки n рассматривается как конец строки, в то время как в Windows используются символы rn. Если Вы когда-нибудь загружали файл в “Блокнот” и интересовались, почему он показывает целый абзац как одну длинную строку, вполне возможно, что файл был написан на UNIX-подобной платформе и “Блокнот” просто не понимал символов конца строки. К счастью, Python распознает проблемы, связанные с концом строки, и будет одинаково хорошо работать вне зависимости от используемых символов конца строки, но не все программное обеспечение поступает подобным образом. Обычно наиболее легким будет придерживаться одного типа символа конца строки. Если Вы собираетесь развертывать программное обеспечение на UNIX-подобной платформе, Вам следует серьезно обдумать написание всех исходных файлов Python с концами строки в UNIX-стиле, даже если Вы используете Windows. Несмотря на то, что FTP программы часто пытаются перевести концы строки Windows в концы строки в UNIX-стиле, Вы можете для начала сами избавиться от затруднений, просто используя концы строки UNIX. {{{#!wiki tip '''Совет''' Python поставляется со встроенным редактором под названием IDLE для изменения исходных файлов Python, о чем Вы можете прочитать по адресу http://www.python.org/idle/doc/idle2.html. IDLE - это очень мощная IDE, но к сожалению, не имеющая возможности выбора символов конца строки для использования. }}} Один из бесплатных редакторов, который действительно позволяет Вам выбрать, какие концы строки использовать, называется !SciTE, и его можно скачать с http://scintilla.sourceforge.net/SciTEDownload.html. Вы можете выбрать символы конца строки из “Меню” путем нажатия Options->Line End Characters. Опциями являются CR+LF, CR или LF. LF – это сокращение от Line Feed и является символом конца строки UNIX, записывающимся как n в строках Python, CR означает Carriage Return. Windows использует представленные возвраты каретки и подачи строки как rn в строках Python. Если Вы хотите перейти от одного типа конца строки к другому, Вы можете использовать опцию Convert Line End Characters из меню Options. {{ http://python.su/static/images/image008.jpg }} Рисунок 2-5 Скриншот меню окончаний строк !SciTE. == Резюме == Теперь у Вас должно быть очень хорошее понимание всех разнообразных инструментов и методов, использующихся для установки Python и Pylons, и надеемся, у Вас есть настроенная и готовая к работе виртуальная среда Python. Когда все разложено по местам, пришло время переходить к следующей главе и начинать изучать Pylons.