вторник, 21 января 2014 г.

Знакомимся с virtualenv (Перевод)

Знакомимся с virtualenv (Перевод) 

Этот перевод сделан не мой, вот его источник python-glab

Виртуальное окружение может быть очень полезно для тестирования программ. Ian Bicking создал проект  virtualenv, который и является инструментом для создания изолированного окружения Python. Вы можете использовать эти окружения для проверки новых версий ваших программ, новых версий пакетов, которые Вы используете или просто в качестве песочницы для новых пакетов. Кроме того, Вы можете использовать virtualenv в качестве рабочего места в случаях, если Вы не можете копировать файлы в site-packages по какой-либо причине. Когда Вы создаёте виртуальное окружение при помощи virtualenv, он создаёт папку и копирует Python в неё с папкой site-packages и несколькими другими. Кроме того устанавливается pip. Пока активно ваше виртуальное окружение оно используется как обычный Python. Когда же Вам оно перестаёт быть нужным - Вы просто удаляете папку. И всё. Или можете продолжать её использовать для работы.
В этой статье мы потратим немного времени для знакомства с virtualenv.

Установка

Для начала понадобится установить virtualenv. Вы можете использовать для этого pip или easy_install или просто загрузить файл virtualenv.py с их сайта и просто использовать его. На данный момент предположим, что ваша папка Python находится в системном пути поиска и Вы можете использовать  virtualenv в командной строке.

Создаём виртуальное окружение

Для создания песочницы выполните следующую команду:

python virtualenv.py FOLDER_NAME
Где FOLDER_NAME - это имя папки, которую Вы будете использовать в качестве песочницы. На моём компьютере Windows 7, я добавил папку C:\Python26\Scripts в путь поиска так что я могу использовать команду virtualenv.py FOLDER_NAME без слова python. Если Вы не укажете имя папки, то получите в ответ список опций, которые можно передать скрипту. Давайте создадим проект с названием sandbox. Как его использовать? Для начала надо его активировать:
На POSIX системах Вам нужно source bin/activate тогда как на Windows Вам нужна команда \путь_к_песочнице\Scripts\activate. Давайте пройдём через эти шаги. Песочницу создадим на рабочем столе:

C:\Users\mdriscoll\Desktop>virtualenv sandbox
New python executable in sandbox\Scripts\python.exe
Installing setuptools................done.
Installing pip...................done.

C:\Users\mdriscoll\Desktop>sandbox\Scripts\activate
(sandbox) C:\Users\mdriscoll\Desktop>

Вы можете заметить что как только Вы активировали ваше виртуальное окружение, Вы увидите в приглашении командной строки префикс с названием папки для вашей песочницы (в нашем случае - “sandbox”). Так Вы можете определить, используется ли песочница или нет. После этого Вы можете использовать pip для установки пакетов в ваше виртуальное окружение. Когда закончите работать просто вызовите команду декативации для того, чтобы выйти из виртуального окружения.
Есть несколько флагов, которые Вы можете передать скрипту virtualenv при создании виртуального окружения. Например, можно использовать –system-site-packages для переноса пакетов из установки Python. Если Вы хотите использовать distribute вместо setuptools, можете использовать флаг –distribute.
virtualenv так же предоставляет способ просто установить библиотеки, но использовать их при помощи стандартного Python. Согласно документации, для этого Вам надо лишь написать специальный скрипт. Подробнее смотрите тут.
Кроме того, есть экспериментальный флаг –relocatable который можно использовать для того, чтобы сделать папку переместимой. Однако, на данный момент, это не работает на Windows.
Наконец, есть флаг –extra-search-dir, который можно использовать, чтобы сохранить ваше виртуальное окружение оффлайн. Это позволяет Вам добавить папку в путь поиска, по которому pip или easy_install будет искать пакеты для установки, даже если у Вас нет доступа к интернету.

Итог

К этому времени Вы должны уметь сами использовать virtualenv. Есть несколько других проектов, которые теперь могут Вам пригодиться. Есть библиотека Doug Hellman’а virtualenvwrapper, которая облегчает создание, удаление и управление виртуальных окружений. Есть zc.buildout, который похож на virtualenv и является его конкурентом. Я рекомендую посмотреть их и изучить - они могут помочь Вам в вашей работе.
На языке оригинала Источник

понедельник, 20 января 2014 г.

Как создать поле AUTOINCREMENT в SQLITE

Короткий ответ: Поле, объявленное как INTEGER PRIMARY KEY будет автоматически увеличиваться.

А вот длинный ответ: Если вы объявили поле таблицы как INTEGER PRIMARY KEY, то при вводе вами в это поле NULL, этот NULL автоматически преобразуется в целое число которое на единицу больше чем самое большое число в этой колонке для всех строк данной таблицы, или 1 если таблица пуста,  (Если наибольший целый ключ равен 9223372036854775807, тогда не задействованное значение ключа выбирается случайным образом) Например, предположим у вас есть таблица, подобная вот такой:
CREATE TABLE t1(
  a INTEGER PRIMARY KEY,
  b INTEGER
);
Тогда предложение
INSERT INTO t1 VALUES(NULL,123);
логически эквивалентно такому:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
Существует функция sqlite3_last_insert_rowid(). Она вернет целый ключ для последней удачной операции вставки.

Обратите внимание на то, что ключ как целое число должен быть больше, чем самое большое число уже введенное в это поле таблицы. Новый ключ должен быть уникальным среди ключей уже записанных в базу, но может уже пересекаться с ключами, удаленными из таблицы. Что бы в данном поле создавался уникальный ключ в течении времени жизни таблицы, добавьте к описанию поля INTEGER PRIMARY KEY ключевое слово  AUTOINCREMENT. Выбранный ключ должен быть больше, чем самый большой ключ уже записанный в эту таблицу. Если это поле уже содержит ключ, равный или  больше добавляемому, то INSERT закончится аварийно с кодом ошибки SQLITE_FULL.

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога