Python

Материал из 1GbWiki.

Перейти к: навигация, поиск

Хостинг 1Gb.ua позволяет запускать скрипты написанные на языке 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


[править] Установка собственной версии

Общесистемно не всегда возможно обновить Python на сервере, но среда хостинга 1Gb.ua позволяет поставить и использовать любую версию из своего домашнего каталога. Как это сделать:
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

[править] См. также

[править] Ссылки

  • python.org (англ.) - официальный сайт Python; дистрибутивы, документация, примеры.
  • Easy Install (рус.) - документация по пакету Setuptools, примеры использования команды easy_install.
  • virtualenv (англ.) - документация по virtualenv; пакеты для загрузки.
Личные инструменты