Думали ли вы (в очередной раз подготавливая среду для Python) о том, как было бы здорово, если бы не приходилось настраивать с нуля рабочее окружение (да ещё и под разными операционными системами), а можно было бы сесть и просто начать писать? Я случайно открыл для себя pythonanywhere.com — сервис, позволяющий вести разработку на Python онлайн, прямо в браузере. Под катом — описание сервиса с картинками и видео.
У меня сейчас настроены несколько Windows и Linux компьютеров, синхронизирован исходный код через Dropbox и заведён microinstance на Amazon EC2. Всё это заняло уйму времени и не очень удобно — бывает идею хочется проверить «в поле», и рядом нет настроенной с любовью среды. Что же предлагает PythonAnywhere?
Прежде чем читать длинное описание, предлагаю посмотреть видео, кратко рассказывающее о сервисе:
Также можно ознакомиться с выступлением разработчика Harry Percival на PyCon UK 2011 (хорошее знание английского приветствуется, но и без него можно многое понять из презентации):
В конце выступления Гарри не хватило времени и он вынужден был бегать по залу, чтобы у него не отобрали микрофон.
Программируем на Python в интернет
PythonAnywhere — это среда для разработки на Python непосредственно в браузере плюс
Владельцы айпадов торжествуют!
Теперь питоноводы могут писать приложения на iPad, с телефона или даже на «умном» телевизоре (smart TV) так же легко, как раньше делали это на своих компьютерах. PythonAnywhere работает на iPad и скоро будет готова версия для Android. Вы можете писать свои программы в веб-редакторе или запустить консольную сессию из-под любого современного браузера, поддерживающего HTML5. Уже не надо настраивать свой собственный сервер или платить за его настройку.
А что за кадром?
PythonAnywhere использует сервера Amazon (EC2), а мы можем использовать все преимущества этого подхода. Для быстрой разработки несложных приложений не понадобится платить ни копейки. А в случае мощных и ресурсоёмких задач — оплатим только использованные ресурсы.
Помимо того, имеется интеграция с DropBox, можно синхронизировать свои данные и код. При помощи командной строки легко работать с git, mercurial или subversion проектами на GitHub, Bitbucket и любом другом публичном репозитории.
Предлагаются версии Python 2.6, 2.7 и 3.2. Установлено очень много библиотек — NumPy, SciPy, Mechanize, BeautifulSoup, pycrypto и другие. Если этого набора недостаточно — имеются easy_install и pip, только используйте флаг --user, установка будет произведена в директорию .local в вашей домашней папке. Также добавлены virtualenv и virtualenvwrapper.
Поддерживается не только Django: Flask, Bottle, web2py — любой WSGI веб-фреймворк будет работать и скорее всего уже установлен (см. батарейки). В качестве баз данных можно использовать MySQL и SQLite, рассматривается возможность добавления MongoDB и PostgreSQL.
На наиболее дорогом (10 $/месяц, 2ГБ под файлы, SSH) тарифном плане можно хостить свой собственный домен, а на бесплатном тарифе дается субдомен вида your-username.pythonanywhere.com. Бесплатный тариф с минимальными ограничениями — доступно 500МБ дискового пространства, нет SSH.
Имеется аналог cron — можно запланировать запуск скриптов (не только Python) по расписанию.
Можно посмотреть логи доступа и ошибок веб-сервера.
Приступаем к работе
Регистрация не занимает много времени и сразу после подтверждения email-адреса можно начинать пользоваться сервисом.
Пробуем Ipython:
Django версии 1.3.1. С помощью easy_install я без проблем смог проапгрейдить Django до текущего релиза 1.4:
easy_install --user --upgrade django
Создаём новый Django-проект — для этого идем на вкладку Web и нажимаем большую кнопку «New Django App»:
Для обычного Python проекта без веб-фреймворков просто создаём файл на вкладке Files и сразу попадаем в веб-редактор; после окончания редактирования готовый файл можно сохранить и тут же запустить на выполнение — откроется всплывающее окно с консолью, в которой будет выполняться наш скрипт.
Продолжим с Django — нам предлагают ввести имя проекта и папку для его хранения:
Мы можем использовать папку, предлагаемую по умолчанию или сохранить проект в DropBox.
Небольшие нюансы, связанные с DropBox:
1) Желательно, чтобы ваш email в PythonAnywhere совпадал с email-ом в DropBox — ведь мы расшарим папку с проектом для «dropbox@pythonanywhere.com» и он должен соотнести эту папку с вашим аккаунтом. Если email не совпадает — на вкладке Files справа вверху нажимаем ссылку «Connect to DropBox» и указываем наш email в DropBox. Нам покажут в картинках как в DropBox расшарить свою папку для этого сервиса.
2) Создать проект прямо в каталоге ~/Dropbox нельзя — придется пользоваться подкаталогом, примерно так: ~/Dropbox/PythonAnywhereProjects/myproject. Техподдержка намекает что это временное явление, мол сейчас идёт развитие сервиса и они пока ограничены в возможностях.
3) Нельзя просто удалить расшаренную папку из Dropbox — в таком случае она навсегда останется в PythonAnywhere и её не удастся удалить даже из консоли, т.к. на это у нас нет прав доступа. Поэтому предварительно на сайте DropBox-а уберите доступ к расшаренной папке для пользователя «dropbox@pythonanywhere.com». После этого папка исчезнет из PythonAnywhere и её можно будет спокойно удалить в DropBox.
Итак, я использовал синхронизацию с DropBox:
Проверяем:
Дальше — создаём нужные файлы и редактируем их в веб-редакторе (или запускаем в bash-консоли vim/emacs). Если надо создать приложение в Django-проекте — используем bash-консоль:
./manage.py startapp myapp
Базу данных создаём на вкладке «MySQL», там же задаём пароль пользователя.
После того, как создали файлы — нужно перезагрузить веб-сервер. Для этого служит кнопка «Reload web app» на вкладке «Web».
Если хотите запускать несколько веб-приложений одновременно — техподдержка предлагает создать несколько аккаунтов с тем же email, в дальнейшем появится такая возможность на одном аккаунте.
Другие применения
Возможно вам нужно будет посоветоваться с коллегой — очень легко расшарить любую сессию. Для подключения вашему коллеге не нужно будет даже регистрироваться на сервисе — достаточно указать его email и он получит ссылку на текущую консольную сессию.
Быть может у вас есть блог о программировании с пошаговыми примерами — можно дать возможность читателям прямо на страницах блога тренироваться в программировании. Достаточно добавить этот код:
<iframe
style="width: 640px; height: 480px; border: none;"
name="embedded_python_anywhere"
src="https://www.pythonanywhere.com/embedded/">
</iframe>
Каждый читатель получит свою собственную консоль, состояние которой будет сохраняться при переходе от страницы к странице.
Или вы ведете оффлайн-курс по программированию на Python. Прискорбно тратить первое занятие на ожидание, когда же все новички закончат настройку окружения под вашим руководством. Вместо этого можно предложить зарегистрироваться на PythonAnywhere и уже через несколько минут вплотную приступить к учебному процессу.
Не стоит зацикливаться на Python, ведь тут имеется и bash-консоль. Например, мы можем поддерживать постоянное SSH-соединение со сторонним хостом (обслуживаемый вами сервер и т.п.). Тогда если нам вдруг понадобится срочно подключиться, а мы будем например в гостях — достаточно будет браузера, консоль ждет нас в том состоянии, в каком мы её оставили.
Ещё это хорошая альтернатива Google App Engine (а может даже и некоторым платным Python хостингам). Уверен, вы сможете придумать и другие варианты.
Автор: brunen9