Pull to refresh

Открытый вебинар «The Python Packaging»

Reading time 1 min
Views 1.4K
Python *C++ *Conferences

"The Python packaging has a reputation of a somewhat black box from the early days. There are many unknown parts, and people mostly get by with just copying other projects, build configurations, and roll with them.” (c) Bernat Gabor - the maintainer of both the virtualenv and tox project, occasionally contributing to both setuptools and pip.

Попытаемся исправить эту ситуацию и разобраться, как устроено построение пакетов в питоне (а точнее, как оно было устроено раньше и как предлагается делать сейчас). А также, рассмотрим более сложный случай - построение пакетов с нативными модулями (С++/CUDA).

Технические вебинары компании Xperience AI проходят регулярно в свободном доступе. Чтобы получить приглашение на доклад Григория Серебрякова, а также получать приглашения на будущие выступления, оставьте свой адрес здесь. Часть лекций появляется на youtube-канале Xperience AI.

Читать далее
Total votes 3: ↑3 and ↓0 +3
Comments 0

Хабраподсветка или эксперименты в изолированном окружении Python

Reading time 4 min
Views 4.9K
Python *
Протестировать свежую версию любимого фреймоврка. Запустить приложение со специфичным набором библиотек. Установить необходимые библиотеки по списку зависимостей. Как решить все эти задачи не затронув системные файлы? В этой статье речь пойдет об утилитах virutalenv и pip.
Читать дальше →
Total votes 30: ↑28 and ↓2 +26
Comments 11

Простейший способ создать окружение virtualenv

Reading time 1 min
Views 16K
Python *
В этой статье я хочу вам рассказать про это уникальный способ создания изолированных окружений Python для удобной и комфортной разработки даже в самых дремучих условиях.

$ python -murllib http://tiny.cc/ve-setup | python

Так это выглядит, а под катом находится пара рецептов использования.
Читать дальше →
Total votes 31: ↑26 and ↓5 +21
Comments 6

Настраиваем окружение на Mac OS и собираем автономное приложение с PySide/PyQt

Reading time 5 min
Views 26K
Python *
image
Сейчас все удобнее становится использовать HTML и JavaScript в интерфейсах приложений. И именно такая задача недавно появилась передо мной, с одним важным условием — на выходе должно быть полностью standalone приложение, не требующее установки дополнительных библиотек и способное запуститься в обычном пользовательском окружения.

В силу своего природного обаяния в качестве основного языка был выбран Python + PySide c WebKit на борту, для сборки app-бандла использовался py2app.

Проблемы появились, при первой же попытке запустить приложение на чистой системе — обнаружилось большое количество внешних зависимостей, которые py2app не смог самостоятельно разрешить. Под катом пошаговая инструкция как эта проблема была решена.
Читать дальше →
Total votes 42: ↑40 and ↓2 +38
Comments 18

HowTo: continuous integration проекта на Django с помощью TeamCity

Reading time 8 min
Views 13K
Django *

Введение


В процессе разработки, создавая новый функционал, всё чаще широкими мазками стал задевать старый код чем разрушал логику его работы. Это заставило всё-таки написать юнит и интеграционные тесты для старого кода и автоматизировать их запуск, т.к. гонять руками все тесты как-то грустно. Как раз вспомнилось недавнее руководство по CI Django в Jenkins и довольно старое по Webtest в Django. В итоге была совершена попытка поднять Дженкинса, но он как-то на моей убунте не взлетел и я грешным делом вспомнил про TeamCity. «Раз уж пишу в PyCharm и нашёл к нему подход, то, наверно, и TeamCity осилю, ведь конторка-то одна!» — подумалось мне… В общем-то я оказался прав, и, пока мне позволяет карма, решил подарить вам ультраполезный (и мегаподробный), в отличие от моего предыдущего, мануал :)

Итого: кому требуется руководство по поднятию интеграционного сервера TeamCity, и тестирование в нём Django проектов c тестами nose и webtest в виртуальном окружении python с автоматическим его (окружения) обновлением — добро пожаловать под кат.

Осторожно! Для работы TeamCity требуется (согласно документации) sun/oracle версия JVM…
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 16

Nginx + uWSGI + virtualenv + Django на Debian Squeeze

Reading time 4 min
Views 33K
Django *
Некоторое время назад озадачился поиском способа развертывания проектов Django, к которому предъявлялись два требования:
  1. Удобное управление запуском/остановкой/перезапуском нескольких проектов на одном хосте
  2. Поддержка разных виртуальных сред для разных проектов

По второму пункту мой выбор склонился в пользу Nginx + uWSGI. По первому же, из рассмотренных мною вариантов больше всего понравились обвязки для uWSGI в Debian.
Читать дальше →
Total votes 28: ↑25 and ↓3 +22
Comments 45

Виртуальный хостинг Django, модель N

Reading time 5 min
Views 5.7K
Django *
Существует множество способов разворачивания Django-приложений в *nix-среде. Не буду претендовать на оригинальность, просто поделюсь самым-самым-самым-самым своим.

Вводные условия


Предпосылки:
  • Один клиент (заказчик) — один юзер в системе на сервере.
  • Все проекты клиента — в одной файловой иерархии.
  • Virtualenv — это хорошо и must use.
  • Ftp — зло, используем современные средства (sftp).
  • Количество файлов для управления проектами должно быть сведено к минимуму.
Используемый софт:
  • nginx
  • uwsgi
  • cron
  • virtualenv
  • openssh

Читать дальше →
Total votes 30: ↑28 and ↓2 +26
Comments 14

Настраиваем связку graphite + virtualenv + collectd

Reading time 6 min
Views 12K
Server Administration *
Sandbox
В данной статье я бы хотел поделиться своим опытом настройки настройки сервиса сбора и визуализации статистики сollectd в связке с graphite. Первый используется как сборщик данных, второй — как хранилище с визуализатором.
Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Comments 9

Вышел PyCharm 2.5 с поддержкой удаленных интерпретаторов, улучшенным virtualenv, SVN 1.7 и пр

Reading time 1 min
Views 6.5K
JetBrains corporate blog Python *Django *
В пятницу, не смотря, что она была еще и 13 апреля, команда создающая PyCharm, передовую IDE для Python от JetBrains, выпустила очередное обновление своего продукта — версию 2.5.
В этот релиз вошли важные нововведения по работе с Python-окружением и не только:
Читать дальше →
Total votes 40: ↑40 and ↓0 +40
Comments 11

UCS2 или UCS4? — pyodbc и работа с utf16 данными в MSSQL

Reading time 2 min
Views 1.1K
Python *
Sandbox

Проблема


Для работы с базой данных MSSQL Server 2005 в кодировке UTF-16(UCS2) я использую скрипт, написанный на python. Этот скрипт использует для работы с базой данных следующий набор инструментов:
  • unixODBC
  • FreeTDS
  • pyodbc
  • sqlachemy

И тут появилась трудность: при получении строковых данных из базы (поля nvarchar, ntext) неправильно обрабатывается юникод.
Как выяснилось, установленный у меня питон был собран с UCS4 юникодом. Методы получения типа юникода в сборке python хорошо описаны в данном вопросе на stackoverflow. Т.е, если выполнить следующую строчку в терминале:
python -c "import sys;print 'UCS4' if sys.maxunicode > 65536 else 'UCS2'"
то мы получаем версию сборки юникода для python.В моем случае это было UCS4. Что это за собой тянет:
  1. unixODBC вызывая соответствующие функции работы с базой данных с аппендиксом W (например, SQLExecDirectW()), получает результаты. в которых один символ текста занимает 2 байта(UCS2)
  2. pyodbc получает результаты от ODBC-драйвера, и в свою очередь сохраняет результаты в переменную с типом unicode
  3. Таким образом 1 символ результата, по мнению pyodbc, составляет 4 байта(UCS4). Именно так и сохраняется результат. полученный из ODBC-драйвера.

Драйвер возвращает данные, в которых символ занимает 2 байта, а pyodbc переделывает эти данные так, что символ занимает 4 байта. Все бы хорошо, если бы было какое-либо преобразование, но данные просто сохраняются как массив байтов в переменную с типом unicode, что несет неприятные последствия: символ результата по-сути содержит 2 символа того результата, который вернул ODBC-драйвер.
Читать дальше →
Total votes 9: ↑6 and ↓3 +3
Comments 0

Мульти-хостинг django приложений с помощью nginx + uwsgi + virtualenv

Reading time 6 min
Views 11K
Django *
Tutorial
Sandbox
Задача: развернуть несколько django-проектов, использующих разные версии django и разные версии питона на одном сервере.

Инструкция приводится для ОС Ubuntu 12.04.
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Comments 11

Менеджер версий python

Reading time 5 min
Views 88K
Python *
Tutorial
Sandbox
Иногда полезно держать несколько версий python на одной машине. Допустим для разработки двух проектов нам необходима вторая и третья ветка python. Или вы поддерживаете проект который использует старую версию python.

Обычно для этого мы используем виртуальное окружение virtualenv или же обертку для него virtualenvwrapper. Об этом я рассказывать не буду, так как есть уже много подобных статей, да и в документациях к самим утилитам все очень хорошо объяснено. Достаточно только забить virtualenv или virtualenvwrapper в поисковик.
Но в дополнение к ним я хочу рассказать в этой статье про менеджер версий python. Кому любопытно прошу под кат.
Читать дальше →
Total votes 37: ↑33 and ↓4 +29
Comments 7

Почему я ненавижу virtualenv и pip

Reading time 9 min
Views 99K
Python *
Translation
Я не разделяю всеобщей любви к virtualenv (далее — venv) и pip. Я считаю, что они лишь вносят неразбериху и более того — вредят. Python-программисты чаще всего не соглашаются со мной, да и venv+pip де-факто считается стандартом в python-сообществе. Так как я понимаю, насколько голословными звучат мои высказывания, решил написать сей трактат. Конечно, я иногда пускаюсь спорить на эту тему и в реальной жизни: и ну нравится мне заводить людей и наблюдать, как страстно они остаивают свою позицию. Но при этом мне всегда кажется, что словесно я не могу обосновать свою позицию в полной мере. Поэтому вместо того, чтобы постоянно пытаться вербально доказывать свою точку зрения, я решил написать эту статью, дабы потом просто показывать её людям. Может быть тогда некоторые со мной согласятся, потому что сейчас не согласен почти никто. А может наоборот, как только мои доводы будут всецело поняты, найдутся те, кто их аргументированно опровергнет. Так или иначе, я буду рад любому варианту развития событий.
Читать дальше →
Total votes 86: ↑68 and ↓18 +50
Comments 61

Впечатления от посещения EuroPython 2014

Reading time 14 min
Views 12K
Python *
Одна из отличительных особенностей языка Python — это посвящённые этому языку конференции, так называемые PyConы. Не так давно мне удалось побывать на одном таком PyCon-е — EuroPython 2014. EuroPython — это одна из наиболее крупных европейских ежегодных конференций по языку Python, которая три последних года проводилась во Флоренции, а в 2014м — первый раз в Берлине. Пока свежи воспоминания решил написать небольшой отчётик — что и как было.
Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Comments 2

Pundle — bundler для python

Reading time 2 min
Views 11K
Python *
Начну с пиара другого проекта, который мне очень нравится использовать — pyenv. Это порт rbenv для python, который служит для установки нужных версий python в папку пользователя в недра ~/.pyenv, и активации нужной версии руками или, что более грамотно, через файл .pyenv-version в папке проекта.

Следуя этой старой доброй традиции обмениваться здравыми идеями с ruby сообществом, я решил портировать идею Bundler (http://bundler.io/), и назвал его Pundle. Это вторая часть рабочего процесса связанного с версиями интерпретаторов и пакетов в руби, и как и первая, достаточно разумна.

Главная идея pundle в том, чтобы не создавать отдельную директорию на каждую комбинацию версий пакетов как в virtualenv, а вместо этого поставить все пакеты в директории типа .pundlerdir/python-version-variant/package-name-2.3.4, и при старте проекта, взяв информацию из frozen.txt, активировать нужные версии пакетов

Читать дальше →
Total votes 31: ↑26 and ↓5 +21
Comments 21

Пример запуска Django 1.7.4 под Python 3.4.2 на Ubuntu 14.04

Reading time 6 min
Views 39K
Python *Django *
Sandbox
Всем привет.



В данном примере я покажу один из способов запуска актуальной версии Django под свежим Python.

Python 3.4.2 | Release Date: 2014-10-13
Django 1.7.4 | January 27, 2015

Будут использованы virtualenvwrapper и pyenv:
— virtualenvwrapper будет работать с «системным» python2
— используем pyenv для установки последней версии Python
— используем virtualenvwrapper для создания виртуального окружения с последней версей Python «внутри»
Читать дальше →
Total votes 35: ↑16 and ↓19 -3
Comments 44

«pip -t» — простая альтернатива virtualenv

Reading time 4 min
Views 18K
Website development *Python *
Translation

TL;DR


Чтобы просто установить и изолировать зависимости проекта, virtualenv часто оказывается слишком тяжелым решением. Предлагаем простую альтернативу:
  1. добавить ./.pip в переменную окружения PYTHONPATH,
  2. установить пакеты локально с помощью pip install -t .pip,
  3. запускать python из папки проекта.

Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 12

cx_Freeze + virtualenv = баги и зигзаги

Reading time 4 min
Views 14K
Python *
Sandbox
На днях решил попробовать собрать своего свежеиспечённого бота для Телеграм в исполняемый файл. Существуют различные решения: py2exe, pyInstaller, cx_Freeze. Я использую Ubuntu 14.04 и на моём компьютере, и на сервере, поэтому выбор пал на cx_Freeze, ввиду его кросс-платформенности и поддержки Python 3. (На момент написания статьи я ещё не успел распробовать pyInstaller, который обладает этими же свойствами. Если будет что-то интересное, расскажу об этом в другой статье).
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Comments 9

Отзывчивые столбчатые диаграммы с Bokeh, Flask и Python 3

Reading time 8 min
Views 18K
Python *Data visualization *Flask *
Tutorial
Translation

От переводчика


Недавно наткнулся в python digest на туториал по Flask+Bokeh. Туториал ориентирован на новичков, не требуется даже знать синтаксис Python и HTML. Примеры работают под Ubuntu 16.04, на Windows немного отличается работа с виртуальными окружениями.


image

Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 8

Так ли мал Alpine 3.8 Docker для Python 3 runtime

Reading time 8 min
Views 29K
Python *Development for Linux *DevOps *
Совсем недавно произошёл релиз минималистичного Alpine Linux 3.8. Очень часто данный linux образ используют в докере, собирая очень компактные окружения для runtime.

Сегодняшняя статья будет рассмотрена в срезе использования runtime системы в докере для Python 3.6.X версий, с различным составом пакетов pip. А так же мы соберём самый новый Python 3.7 в Alpine.

В конце статьи будет представлен размер образа image, занимаемый на диске, в зависимости от состава пакетов pip и произведено сравнение между дистрибутивами Alpine 3.8, Debian 9, Fedora 28.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Comments 13
1