Analitycs

понедельник, 17 октября 2011 г.

py2app собирает .app с Qt4 без MySQL (libqsqlmysql.dylib)

Все чудесатей и чудесатей - сказала Алиса.
Все чудестраньше и чудестраньше

Мало того что, в Qt4 по умолчанию отсутствует поддержка MySQL - приходится докомпилировать  плагин из исходников, так еще и выяснилось, что при сборке .app пакета приложения py2app честно включает туда библиотеки Qt,  но забывает положить ее же plugins.

Лечение

$ macdeployqt ./dist/YourSuperPuperApplication.app


После непродолжительной ругани в консоли в .app появляется папка PlugIns - обратите внимание на большую I в центре названия.

Но разумеется - папка sqldrivers там не появилась (это было бы слишком просто ;-) ), приходится докопировать "ручками".


$ cp -R /Developer/Applications/Qt/plugins/sqldrivers ./distYourSuperPuperApplication.app/Content/PlugIns/

После чего приложение вроде бы подхватило MySQL и попыталось взлететь... но, к сожалению -  грохнулось на взлёте по другой причине.

Но это, уже как говорится - другая история... ;-)

Одно не понимаю - толи лыжи не едут, то ли я... чего то не понимаю - почему такие сложности на каждом шагу? ЧЯДН?

locate/updatedb в MacOS

Когда постоянно переключаешься между системами - их мелкие различия (такие, как отличия в сервисах и командах) начинают безумно раздражать.

Например, всегда раздражает не работающий locate/updatedb в MacOS по умолчанию "из коробки.

Но если locate дает явную подсказку - чего и как запускать, чтобы заработало, до updatedb - просто отсутствует как класс.

# updatedn
sh: updatedb: command not found

Лечение

# sudo ln -s /usr/libexec/locate.updatedb /usr/bin/updatedb

# sudo updatedb
И теперь наслаждаемся нормально работающим locate. ;-)

Найдено тут

воскресенье, 16 октября 2011 г.

Как обновить MacPorts на MacOS X?

Вкратце - для тех кто не знаком, представляю MacPorts - система полноценных портов для красноглазиков любителей true-unix-way в MacOs.

Собственно - после их установки работаем как с обычным FreeBSD

# /opt/local/bin/port install py2app

Время от времени нужно делать обновление самих портов

# /opt/local/bin/port selfupdate

Но самый страшный вопрос - это как обновить MacPorts?

Отвечаю... примерно так



# port upgrade outdated

И можно идти курить, есть, спать... и все такое прочее ;-)

суббота, 15 октября 2011 г.

Python py2app: AttributeError: 'module' object has no attribute 'TickCount'

Симптомы

После запуска собранного с помощью py2app пакета для MacOS на другой машине получаем падение с ошибкой

AttributeError: 'module' object has no attribute 'TickCount'

Лечение

В файле setup.py отключить argv_emulation, то есть - поставить в False

APP = ['MyApp.py']
OPTIONS = { 
   'argv_emulation': False,
   ...
}

setup(
    app=APP,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)


Подробности тут

среда, 12 октября 2011 г.

PayPal в России заработал!

Не прошло и многих лет, как с сегодняшнего дня PayPal начал принимать платежи в Россию.

Это действительно - очень хорошие новости, но как водится - не бывает меда без дегтя -  пока вывести их можно только на счет в АМЕРИКАНСКОМ банке.  Думаю для 99.99% из нас означает, что вывод невозможен в принципе... но для нас, старых интернет-шопоголиков, это не принципиально. Как говорится - "Easy come - easy go" (с)

Вообщем, если кому нравится ScaleModels.ru, этот блог (хотя он вообщем-то - просто записная книжка по работе) и вообще то, что я делаю - могут теперь выразить благодарность более материально.

PayPal

Заранее большое спасибо!

вторник, 11 октября 2011 г.

Как узнать из какого каталога Python использует библиотеку? (import xxx)


$ python

Python 2.6.7 (r267:88850, Oct  8 2011, 08:42:47)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> import PyQt4
>>> PyQt4

<module 'PyQt4' from '/Users/michael_xiii/Envs/py26/lib/python2.6/site-packages/PyQt4/__init__.py'>

понедельник, 10 октября 2011 г.

Python - RuntimeError: maximum recursion depth exceeded while getting the str of an object

При активном использовании рекурсивных функций в Питоне начинает вываливаться ошибка RuntimeError: maximum recursion depth exceeded while getting the str of an object

Лечение быстрое, но не оптимальное

import sys
sys.setrecursionlimit(XXX)

Где XXX число, подбираемое экспериментально, основываясь на вашей программе. Но лучше, конечно, обходится без рекурсии. ;-)