« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга


ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
    Популярное
Примеры реализации Хранилищ данных предприятия

Моя собственная база данных

Функция GetMenuItemCount

Использование Winsock контрола

Безопасность технологии GPRS

Руководство по работе с БД Firebird с использованием библиотеки ADO .Net 2.0

Заполнение области ввода

Гостевая книга на ASP.NET

Описание функций C (Си) / C++ - strset

Функция SetDlgItemText




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 92
Пользователей: 0

Статьи:: Интернет технологии :: Python :: Статьи :: [g]Vim в режиме Python: Рекомпиляция в Windows



отправить ссылку другу версия для печати  Обсудить на форуме

[g]Vim в режиме Python: Рекомпиляция в Windows

Редактор Vim наиболее известен среди разработчиков в системах Unix — конкурент emacs, что-то вроде консольного IDE — этот редактор при должной сноровке и настройке (мне кажется, сноровке несколько меньшей и настройке более очевидной чем в emacs, но у последнего также есть мощная мультифункциональность — выбор за программистом) способен убыстрить и упростить многие процессы на этапах разработки не в ущерб таким удобствам как, например, авто-дополнение и навигация по проекту.



Однако, если вы собираетесь использовать его для разработки на Python со всеми подобными удобствами — потребуются некоторые усилия: а именно, перекомпиляция…

Приведу несколько ссылок по теме:

Версии

Компиляция производилась с использованием [g]Vim 7.1, Python 2.5.2, Tcl 8.5.1, Cygwin 1.5.25-11 на Windows XP SP2, но сценарий при этом должен быть насколько возможно независим от версий.

Установка необходимых программ

Итак, подготовка. Нужно заранее установить сам язык — Python (если он не установлен) и, если вы собираетесь использовать Tcl — соответственно Tcl/Tk (с некоторого времени язык стал владением ActiveState: можно скачать бесплатный ActiveTcl). При компиляции используются динамические библиотеки соответствующих языков.

Для работы с архивами и собственно компиляции нам понадобится эмулятор Unix-утилит под Windows - это Cygwin. В нём существуют и компилятор gcc, и необходимые для компиляции файлы (есть путь с компилятором Borland, но он несколько сложнее). Файл установки работает немного непривычным образом — скачивая и файлы установки и пакеты уже после вашего выбора (если вы выберете установку из Интернет, которая в первый раз в любом случае необходима) — при этом для обновления или до/переустановки пакетов вы, возможно, будете возвращаться к инсталлятору довольно-таки часто. Тем не менее, чтобы установить минимальный набор необходимых для нашего случая вещей — нужно отметить лишь пару пунктов: после выбора способа установки (на данный момент наиболее стабильно для меня работало зеркало ftp://mirror.switch.ch (хотя буквально в эти секунды его исключили из списка официальных зеркал): если будут ошибки закачки — вас снова вернут к выбору зеркала) в списке выбора пакетов убедитесь что вы находитесь в режиме Category (переключив его, если надо, кнопкой View вверху), рядом с пунктом All, несколько раз потыкав надпись Default поменяйте её на Uninstall (чтобы не устанавливать ненужных пакетов) и выберите следующие пункты — Utils/patch, Devel/gcc-g++, Devel/make, System/man и Devel/gcc-mingw (последний, возможно, будет уже заранее выбран, значит они уже исправили одну проблему, которая отражалось на удачной компиляции :) ) — при этом у вас автоматически станут выбраны некоторые другие относительно необходимые пакеты (можно перепроверить): Shells/bash, Utils/bzip2 и Devel/mingw-runtime (последний, тем не менее, безмерно важен). Также советую установить Web/wget для того, чтобы облегчить в дальнейшем закачку патчей. Всё, можно жать установку.

Затем нужно, собственно, установить gVim. Можно заранее его настроить под Python, руководствуясь статьей, упомянутой выше — тогда при попытке подключения авто-дополнения Vim будет сообщать о необходимости перекомпиляции с ключом +python, что мы и планируем сделать.

Подготовка

Запустите cmd и убедитесь, что в переменных окружения USERNAME и USERDOMAIN содержатся ваше имя и имя вашего компьютера и домена соответственно (echo %username%@%userdomain%), а PATH содержит путь к bin-каталогу Cygwin. HOME может указывать на ваш каталог “Мои документы” (туда, где находится ваш файл настройки vim — vimrc), а VIM — на месторасположение установленного, рабочего редактора vim, желательно в формате 8.3 (напр.: C:PROGRA~1VIM). Значения переменных можно изменять в диалоге, расположенном здесь: Мой компьютер → Свойства → Дополнительно → Переменные среды.

Не менее, а даже более нам необходимы исходники, поэтому скачиваем их для соответствующей установленной версии (будьте внимательны — именно исходники для Unix, даже при компиляции под Win32) (по предыдущей ссылке также можно скачать файлы для отладки, но отлаживание в этой статье не рассматривается и в их присутствии нет необходимости). Поверх этих исходников нужно добыть дополнение для Windows (-extra) и файлы языков (-lang) соответствующей версии отсюда.

Также, если вы используете стабильный релиз и хотите заодно установить новейшие патчи — за файлами патчей обращайтесь сюда (исправьте номер версии в ссылке, если нужно). Здесь есть некоторая проблема, поскольку файлы патчей упаковываются в один только при достижении сотни (001-100, 101-200 и т.д.), поэтому если их, например, 275 — последние 75 файлов придётся закачивать руками или написав batch-скрипт с использованием telnet. Однако, у нас уже установлен cygwin, поэтому можно создать .sh-скрипт, выполняющий те же функции через wget, выглядеть это может примерно так:

#!/bin/bash
PATCHES_DOWNLOAD_PATH=ftp://ftp.vim.org/pub/vim/patches
PATCHES_VER=7.1
wget $PATCHES_DOWNLOAD_PATH/$PATCHES_VER/$PATCHES_VER.001-100.gz
wget $PATCHES_DOWNLOAD_PATH/$PATCHES_VER/$PATCHES_VER.101-200.gz

for i in `seq 201 278`;
do
    wget $PATCHES_DOWNLOAD_PATH/$PATCHES_VER/$PATCHES_VER.$i
done

Теперь займёмся расположением исходников в виде, удобном для компиляции.

Архивы с исходником, -extra и -lang нужно распаковать (по очереди, с заменой более старых файлов) в какой-либо каталог с сохранением структуры (пусть в нашем случае это будет C:/devel/vim-src/vim71), в нём должны содержаться каталоги /doc, /nsis, /src, /farsi и т.д.. В распаковке вам поможет или bzip2 из Cygwin, или встроенный архиватор файлового менеджера Total Commander или архиватор 7-zip или любой другой архиватор, поддерживающий архивы .tar.gz :).

В подкаталог /runtime можно положить файлы .vim, каталоги /doc и /plugins из рабочей версии вашего редактора vim — тогда они будут пропатчены соответственно, если вы выбрали путь компилирования с патчами. Патчи при этом можно положить в каталог /patches.

Компиляция

Для того, чтобы установить патчи, нужно выполнить над каждым из них команду patch из набора Cygwin, предварительно распаковав архивы файлов с сотнями патчей. В этом случае я воспользовался .bat-файлом вместо .sh скрипта (номера патчей, конечно, нужно, поправить на соответствующие вашему набору):

@ECHO off
ECHO changing directory to parent...

CD ..

ECHO -------------------- %Date% -------------------- >> patching-src.log

ECHO %CD%: applying first 200 patches

patch -p0 < patches/7.1.001-100 >> patching-src.log 2>&1
patch -p0 < patches/7.1.101-200 >> patching-src.log 2>&1

ECHO %CD%: applying the last patches

FOR /L %%B IN (201,1,278) DO
    patch -p0 < patches/7.1.%%B >> patching-src.log 2>&1

ECHO Finished

PAUSE

@ECHO on

Этот файл нужно положить в каталог /patches и после корректировки выполнить (убедитесь, что вся описанная выше структура дерева исходников сформирована): в корне исходников будет создан файл patching-src.log, в котором можно проследить результаты прошедшего патчинга. Если утилита patch не была найдена, проверьте PATH на наличие пути к Cygwin. Если некоторое (небольшое) количество файлов не было найдено и пропатчено — можно сильно не беспокоится, это в основном файлы для XWindow-версии.

Теперь можно перейти непосредственно к компиляции из консоли Cygwin. Для этого необходимо удачно выполнить лишь три команды — перейти в каталог с исходниками (cygwin монтирует ваши диски в точке /cygdrive/: подставьте корректные пути к вашей установке Python и Tcl а также их корректные версии, а если вы не компилируете версию для Tcl — просто уберите соответствующие параметры) и создать файлы vim.exe (консольная версия) и gvim.exe (GUI-версия):

$ cd /cygdrive/c/devel/vim-src/vim71
$ make -B -f Make_cyg.mak GUI=no 
    PYTHON=/cygdrive/c/devel/Python PYTHON_VER=25 DYNAMIC_PYTHON=yes 
    TCL=/cygdrive/c/devel/Tcl TCL_VER=85 DYNAMIC_TCL=yes vim.exe
$ make -B -f Make_cyg.mak OLE=yes 
    PYTHON=/cygdrive/c/devel/Python PYTHON_VER=25 DYNAMIC_PYTHON=yes 
    TCL=/cygdrive/c/devel/Tcl TCL_VER=85 DYNAMIC_TCL=yes gvim.exe

На предупреждения и даже некоторые ошибки, если они относятся к Python или Tcl и если процесс продолжается, а в результате .exe-файлы созданы, можно не обращать внимания. Если всё завершилось удачно, то в каталоге /src вы найдёте оба .exe-файла. Сделайте бэкап существующих файлов в рабочем, установленном vim (например, vim.exe.bak и gvim.exe.bak) и замените их только что скомпилированными. Если вы применяли патчи, то верните обратно *.vim файлы, каталоги /doc и /plugins из каталога /runtime, предварительно сделав бэкапы и для них и заменяя старые версии. После этого запустите gVim и vim из папки рабочего vim, проверьте версию и опции компилирования там же на присутствие +python — в большинстве случаев всё должно сложиться удачно.

Возможные ошибки

В процессе компилирования мне встретилось две ошибки: cannot exec ‘cc1’: No such file or directory и ld: cannot find -lgcc. Обе они известны авторам Cygwin, однако в моём случае в скачанных мной версиях они ещё не были решены. Первая временно решается предварительным (перед компиляцией) добавлением каталога с исполняемым файлом cc1.exe в локальный PATH cygwin:

$ PATH=$PATH:/cygdrive/c/devel/cygwin/lib/gcc/i686-pc-cygwin/3.4.4

Вторая решается так, как должна была решаться и первая — установкой Devel/gcc-mingw (её обещали сделать автоматической при выборе gcc в будущем) при установке Cygwin. При этом важно установить пакеты одновременно, поэтому если ошибка всё равно появляется — попробуйте выбрать режим Reinstall в установщике Cygwin в том месте, где до этого вы выбирали режим Uninstall и установите Cygwin заново.

Настройка Vim для Python

(Upd.)

На основе этой статьи я создал пак (взять можно здесь) из последних версий упомянутый в ней плагинов (Project, PythonComplete, NERD_Commenter, VCSCommand, RunScript и TagList плюс, поверх — PyDiction) + минимальной настройки (в ftplugin/python.vim, практически идентичный соответствующему в статье (изменённая функция TabWrapper + другой способ подключения словаря) — только общепринятые стандарты, omni completion повешен на Tab). Содержимое требуется распаковать в каталог <путь_к_установленному_vim>vimfiles. Для плагина taglist потребуется скачать ctags отсюда, и распаковав полученный архив в некоторый каталог, добавить путь к нему в переменную окружения PATH. Затем нужно запустить vim и выполнить команду:

:helptags $VIMvimfilesdoc

После этого можно будет использовать команду :help <название_плагина> для получения документации по соответствующему плагину.

Обычное автодополнение при использовании настроек из пакета работает по Tab, дополнение по контексту (omni completion) — по Ctrl+Enter и Ctrl+Space, а дополнение по ключевым словам и модулям — по Ctrl+Tab (при большом количестве вариантов словарь загружается относительно долго, поэтому намеренно установлено не очень удобное сочетание).

Для того, чтобы вставлять предлагаемые по спецификации строки в заголовки python-файлов при создании, добавьте нижеприведённый код в файл <путь_к_установленному_vim>_vimrc (строка filename добавлена для демонстрации возможности добавления имени файла):

function! BufNewFile_PY()
   0put = '#!/usr/bin/env python'
   1put = '#-*- coding: utf-8 -*-'
   $put = '#-*- filename: ' . expand('') . ' -*-'
   $put = ''
   $put = ''
   normal G
endfunction

autocmd BufNewFile *.py call BufNewFile_PY()

…Вот теперь можно c чрезвычайным удобством программировать на Python.
 

Источник: http://shaman-sir.wikidot.com




Рубрика: Статьи




Вышел MySQL 5.1.30, первый стабильный рели....

MySQL

После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:


Подробнее... | Рубрика: MySQL | Добавлено: 28.11.2008

Тестирование параллельных программ.

Тестирование

Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.


Подробнее... | Рубрика: Тестирование | Добавлено: 28.11.2008

Архитектура AMD64 (EM64T).

Архитектура AMD

Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.


Подробнее... | Рубрика: Архитектура AMD | Добавлено: 27.11.2008

Остальные статьи:

Платформа 2009. Определяя будущее
Windows Vista Bridge Sample Library - упра...
Оптимизация 64-битных программ
Подгрузка через AJAX HTML-кода, содержащег...
Обзор нового релиза самой мощной Ajax библ...
Firebug 1.3 и 1.4 alpha — что нового и инт...
Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новы...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейс...
Генераторы отчетов FastReport 4 и QuickRep...


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия