Python
Материал из 1GbWiki.
Хостинг 1Gb.ru позволяет запускать скрипты написанные на языке Python на всех тарифных планах за исключением тарифа "ПРОСТО" .
Содержание |
Версии Python
На серверах виртуального хостинга может быть установлено одновременно несколько версий Python. Посмотреть доступные версии можно командой:
$ ls -l /usr/bin/python[0-9] lrwxrwxrwx 1 root root 9 Jan 8 2013 /usr/bin/python2 -> python2.7 lrwxrwxrwx 1 root root 9 Dec 10 2012 /usr/bin/python3 -> python3.2
Из данного примера видно, что установлены Python 2.7 и 3.2 версий.
Соответственно, точные версии можно посмотреть командами:
$ python3 -V Python 3.2.3
$ python2 -V Python 2.7.3
Также возможно установить любую версию в свой домашний каталог, о чем пойдет речь ниже.
Запуск скриптов на Python
Скрипты могу запускаться в различных режимах, наиболее простой способ - в режиме CGI.
CGI
Для запуска в данном режиме достаточно чтобы скрипт имел расширение .cgi и в начале скрипта был указан путь к интерпретатору (см. shebang).
Пример:
~/http $ cat test_python.cgi #!/usr/bin/python print ("Content-type: text/html\n") print ("hello")
Для того чтобы можно было запускать скрипты с другим расширением, необходимо в ~/http/.htaccess добавить:
AddHandler cgi-script .py
и на файл установить права доступа 755
$ chmod 755 test_python.py
FastCGI
Для запуска в этом режиме необходимо в личном кабинете в разделе "Управление сайтами и серверами" переключить сайт на сервер "UNIX / Apache PHP5 (fastcgi)"; смена типа сервера займет около часа.
Расширение у файла должно быть .fcgi
mod_wsgi
Поддержка модуля mod_wsgi возможна при использовании опции "собственный Apache" из раздела кабинета "Хостинг HTTP служб". В этом случае вы получаете полный контроль к файлам настройки сервера Apache, что позволяет вам создать любую конфигурацию.
Установка собственной версии
Общесистемно не всегда возможно обновить Python на сервере, но среда хостинга 1Gb.ru позволяет поставить и использовать любую версию из своего домашнего каталога.1. Создаем каталог для исходных текстов:
$ mkdir ~/src && cd ~/src
2. С сайта python.org скачиваем архив с исходниками. Пример ниже показывает команды для версии 2.6.9, в вашем случае версия может быть любой.
$ wget http://python.org/ftp/python/2.6.9/Python-2.6.9.tgz
3. Распаковка:
$ tar xvfz Python-*.tgz && cd Python-*
4. Компиляция и установка в каталог ~/local
$ ./configure --prefix=$HOME/local --disable-ipv6 && make && make install
5. Если установка завершилась успешно, следующая команда покажет вам версию Python:
$ ~/local/bin/python -V Python 2.6.9
Настройка окружения; выбор версии по умолчанию
shebang
В простейшем случае для использования какой-либо определенной версии Python достаточно явно указать версию в shebang. Например:
- использование версии 2.7
#!/usr/bin/python2.7 import sys print ("Content-type: text/html\n") print (sys.version)
- собственная версия
#!/home/virtwww/FTP_логин/local/bin/python import sys print ("Content-type: text/html\n") print (sys.version)
Переменные окружения
Для полноценной работы приложения с нестандартным расположением Python и его библиотек необходимо настроить различные переменные окружения, которые, собственно, и будут указывать, где искать (или инсталлировать) тот или иной модуль.
Приведенные команды покажут, как настроить пути для собственной версии Python, пример установки которого приводился выше.
1. В файл ~/.bashrc с помощью редактора добавляем alias на нашу версию Python
alias python=$HOME/local/bin/python
а также PATH и PYTHONPATH
export PATH=${HOME}/local/bin:${HOME}/local/lib64/версия_python/site-packages:${PATH} export PYTHONPATH=${HOME}/local/lib64/версия_python/site-packages:${PYTHONPATH}
Таким образом полностью ваш ~/.bashrc может быть таким:
# /etc/skel/.bashrc # # This file is sourced by all *interactive* bash shells on startup, # including some apparently interactive shells such as scp and rcp # that can't tolerate any output. So make sure this doesn't display # anything or bad things will happen ! alias python=$HOME/local/bin/python # Test for an interactive shell. There is no need to set anything # past this point for scp and rcp, and it's important to refrain from # outputting anything in those cases. if [[ $- != *i* ]] ; then # Shell is non-interactive. Be done now! return fi # Midnight Commander chdir enhancement if [ -f /usr/share/mc/mc.gentoo ]; then . /usr/share/mc/mc.gentoo fi # Put your fun stuff here. export PERL5LIB=${HOME}/perl/lib64/perl5:${HOME}/perl/lib64/perl5/site_perl:${HOME}/perl/lib64/perl5/vendor_perl export PATH=${HOME}/local/bin:${HOME}/local/lib64/python2.6/site-packages:${PATH} export PYTHONPATH=${HOME}/local/lib64/python2.6/site-packages:${PYTHONPATH}
Проверяем что получилось:
$ source ~/.bashrc
Команды должны показать одинаковый результат:
$ python -V Python 2.6.9 $ env python -V Python 2.6.9
2. Для того чтобы web-приложение использовало нашу версию Python, в shebang указываем полный путь:
#!/home/virtwww/FTP_логин/local/bin/python
Также потребуется указать PYTHONPATH, это можно сделать непосредственно в коде приложения, например, используя sys.path.insert или через .htaccess (работает только на типе сервера Apache/CGI, Apache/FastCGI)
SetEnv PYTHONPATH /полный_путь
virtualenv
virtualenv пакет упрощающий создание окружения Python для вашего проекта (-ов). Он позволяет создать различные среды (своя версия Python, свой набор и версий библиотек) на одной площадке и полностью быть независимым от изменений общесистемных библиотек.
Следующие команды приведены для случая, когда установлена своя версия Python в домашний каталог и настроены переменные окружения в файле .bashrc, если используется системный Python, то для при установке virtualenv необходимо указать опцию --prefix (см. ниже пункт 3.1) и иметь настроенное окружение для установки пакетов свой домашний каталоге (подробнее см. ниже раздел "установка модулей").
1. Итак, скачиваем с https://pypi.python.org/pypi/virtualenv последнюю версию пакета virtualenv
$ cd ~/src && wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.10.1.tar.gz
2. Распаковка:
$ tar xvfz virtualenv-*.tar.gz && cd virtualenv-*
3. Устанавливаем в ~/local, этот тот же каталог, куда ранее был установлен Python
$ python setup.py install
3.1. Если используется системный Python или не установлены соответствующие переменные окружения, то скрипту инсталляции нужно сообщить через опцию --prefix место установки и задать PYTHONPATH (подробнее см. ниже раздел "установка модулей").
Например, ставим virtualenv в каталог ~/local
$ export PYTHONPATH=$HOME/local/lib64/python`python -c 'import sys; print (sys.version[:3])'`/site-packages && mkdir -p $PYTHONPATH $ python setup.py install --prefix=~/local
Основные опции при создании окружения командой:
--python - полный путь к интерпретатору python;
--clear - очистка существующего окружения, при этом будут удалены все ранее установленные модули в данное окружение;
--no-site-packages - не использовать модули установленные в системный каталог site-packages, эта опция включена по умолчанию;
--system-site-packages - использовать системные модули из каталога site-packages;
--prompt - имя окружения выводимое в переменной PROMPT шелла;
Создание нового окружения на основе ранее установленного Python:
$ virtualenv -p $HOME/local/bin/python myenv2.6
Перейти в созданное окружение:
$ source ~/myenv2.6/bin/activate
Установка пакетов:
$ easy_install название_пакета
или
$ pip название_пакета
Выйти из окружения:
$ deactivate
Установка модулей
Для Python реализовано несколько менеджеров и способов установки пакетов. Наиболее популярными являются easy_install (пакет setuptools), pip, или методом distutils.
Чтобы пакеты устанавливались в домашний каталог, а не в корневую файловую систему (куда доступа на запись нет), необходимо создать файл конфигурации .pydistutils.cfg описыващий пути установки.
Пример конфигурации для установки пакетов в каталог ~/local
$ cat > ~/.pydistutils.cfg <<END [install] prefix = \$HOME/local [easy_install] install_dir = \$HOME/local/lib64/версия_python/site-packages END
Установка пакета через easy_install:
$ easy_install flup
Установка через скрипты distutils:
$ python setup.py install
См. также
- Юникс шелл
- Django - быстрый старт
- Pylons - быстрый старт
- Trac - быстрый старт
- Zope / Plone - быстрый старт
Ссылки
- python.org (англ.) - официальный сайт Python; дистрибутивы, документация, примеры.
- Easy Install (рус.) - документация по пакету Setuptools, примеры использования команды easy_install.
- virtualenv (англ.) - документация по virtualenv; пакеты для загрузки.