search

Showing posts with label Python27. Show all posts
Showing posts with label Python27. Show all posts

Thursday, May 16, 2013

fedora 18: Как удалить canopy

Ради любопытства установил canopy. Ничего интересного из себя canopy не представляла. Многие пользовались жаловались на ужасную глючность. Поэтому удалим ее.

Как говорит сайт поддержки, для этого необходимо сделать:
1. удалить папки canopy и Enthought (или куда вы там это устновили)
rm -IR canopy Enthought

2. теперь восстановим python в качестве среды разработки поумолчанию (canopy заменял его). Для этого в домашней директории выполним:
gedit .bash_profile

и удалим из файла нечто похожее на:
source ~/Enthought/Canopy_64bit/User/bin/activate

3. официальный мануал на этом месте заканчивает удаление программы. Но мне оказалось этого недостаточно. Выполняем еще в терминале:
export PATH="$PATH:/usr/local/bin/python"


Теперь готово

Thursday, August 30, 2012

Python: Текстовый редактор Sublime Text

В процессе написания приложений на Python я использую eclipse с установленным плагином PyDev. Это полноценная и достаточно удобная IDE. Очень важно и то, что она кросс-платформенная. Есть версия как для Windows так и для Linux. Из минусов - требовательность к системным ресурсам, заторможенность (все-таки на Java написано).

И вот я подумал, а что если найти простой удобный текстовый редактор, конечно, кросс-платформенный, для написания кода, а программу запускать на исполнение через терминал?

Sublime Text 2 - очень интересный текстовый редактор. На сайте есть установщик для Windows и скомпилированная версия для Linux. Редактор сам написан на C++ и поддерживает множество плагинов. Плагины можно создавать в Python.

Справа расположена уменьшенная версия всего текстового файла. Выглядит очень современно и, наверное, удобно. Из интересных функций - массовое выделение для переименовывания переменной с помощью Ctrl + D; нажав Ctrl + P можно легко и быстро перемещаться по различным файлам; если после Ctrl + P набрать @, то поиск будет осуществляться по функциям внутри файла и многое другое.

Thursday, May 3, 2012

Python: Как посмотреть информацию о модуле

Просмотреть все методы, присутствующие в модуле можно с помощью команды, запущенной из терминала:
python -m pydoc mutagen.id3.ID3

Tuesday, April 24, 2012

pyinstaller: RuntimeError: No django root directory found. Please check your pathex definition in the project spec file.

Такая ошибка появляется при компиляции приложений в которых используется django версии 1.4 и выше (не уверен). Если вы даже не используете модуль django, его могут использовать сторонние модули.

Если исходить из того, что вы его не используете, то для завершения компиляции его необходимо исключить из .spec файла.

Открываем .spec для реддактирования и добавляем в раздел Analysis:

excludes=['django']

Пример:

Компиляцию производим командой из директория pyinstaller:
python Build.py ./simpleblogger/simpleblogger.spec

Wednesday, December 14, 2011

Python: Компиляция Linux-приложений

Для компиляции Linux-приложений я использую программу pyinstaller.

Устанавливать программу не надо - просто разархивировать, например, сюда /home/jsn/bin/pyinstaller.

Для компиляции копируем исходный код в папку с программой. Запускаем терминал и вводим комманду из директории с pyinstaller:
python pyinstaller.py tagrider.py

, где tagrider.py - компилируемая программа.

В результате в папке ./pyinstaller будет создана папка с вашей программой, в которой будет находится директория dist. В ней и находится исполняемая программа со всеми ее зависимостями.

Friday, August 5, 2011

Python: Интернализация (i18n) приложения

Интернализацию приложения будем проводить с помощью GNU gettext, который в версии Python 2.7 присутствует. Цель - добавить русский язык в приложение, созданное с помощью wxPython.

Идея:
1. Строки, предназначенные для перевода необходимо пометить - в данном случае вот так _('Строка для перевода')
2. Извлечь помеченные строки в отдельный файл, который будет иметь расширение *.pot
3. Отредактировать полученный файл, вставляя переведенное значение, и сохранить его с расширением *.po
4. Скомпилировать полученный файл в файл с расширением *.mo.
5. Загрузить перевод в приложение.

Пример:
В начале, в код программы необходимо импортировать следующие модули:
import wx
import gettext
import sys, os


Затем создаем иеархию папок с переводами. Они будут иметь следующий вид:
./locale/en_US/LC_MESSAGES/
где en - язык, US - страна.

В приведенном ниже коде при старте программы будет определено местоположение пользователя и его язык по-умолчания. По полученным данным будет загружен файл перевода. При его отсутствии будут отображены символы, присутствующие в коде (_())

basepath = os.path.abspath(os.path.dirname(sys.argv[0]))
localedir = os.path.join(basepath, 'locale')
langid = wx.LANGUAGE_DEFAULT
domain = 'main'
mylocale = wx.Locale(langid)
mylocale.AddCatalogLookupPathPrefix(localedir)
mylocale.AddCatalog(domain)
mytranslation = gettext.translation(domain, localedir, [mylocale.GetCanonicalName()], fallback = True)
mytranslation.install()

wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.DefaultSize)
panel = wx.Panel(self)
text = _(u'Press Me')
button = wx.Button(panel, -1, text)


Код этот можно поместить в def __init__, например.

Теперь, когда код готов, приступим к генерации файлов перевода.

Для этого, если Python у вас установлен на диске C:\, скопируйте файл с кодом (в примере main.py) в папку C:\Python27\Tools\i18n

Затем, для генерации *.pot - файла, выполните из командной строки, находясь в папке i18n:
python pygettext.py -d main -o main.pot main.py


Откройте для редактирования появившийся файл и сделайте превод и укажите кодировку:
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"


Перевод записывайте в строку с msgstr:
#: main.py:28
msgid "Press Me"
msgstr "Переведено - Нажми меня"


Отредактированный файл сохраняем как main.po.

Теперь сгенерируем *.mo - файл. Для этого в терминале выполняем:
python msgfmt.py -o main.mo main.po


Полученный файл вставляем в соответствующую директорию.

P.S. При сохранении переведенного файла использовалась программа Notepad++. Необходимо, чтобы *.po - файл был в кодировке UTF-8. Для этого необходимо зайти в Settings -> Preferences -> New Document/ Default Directory и отметить Encoding UTF-8 without BOM. Внизу появится строка ANSI as UTF-8. Если этого не сделать, компилятор может выдать сообщение об ошибке.

P.P.S. Вышеизложенное было рассмотрено на примере Linux и Eclipse. Чтобы локализацию заставить работать в Windows, необходимо во всех случаях utf-8 заменить на cp1251 (и сохранять *.po -файл также в кодировке cp1251). Таким образом, *.po файлы различны для Windows и Linux.