Evt.TickCount () не найден с Python2.6 на OSX 10.6.3

С Python2.6 модуль Evt (из Carbon import Evt), похоже, не реагирует на TickCount () на OSX. Но Python2.5 в порядке:

from Carbon import Evt
s = Evt.TickCount()

На Python2.5 я получаю возвращаемое целое число. На Python2.6 я получаю:

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

Это на Snow Leopard. Есть ли какая-то библиотека, которая должна быть обновлена ??на OSX, чтобы работать с TickCount ()? У меня есть эта проблема из-за использования файла «/Users/cybertoast/Projects/scripts/dist/fixcatalystlibs.app/Contents/Resources/__boot__.py» , строка 40 , в mainloop [ 0x0 - 0x913913 ]. org . pythonmac . не указано . fixcatalystlibs [ 11722 ] точки остановки = Evt . TickCount () + тайм-аут [ 0x0 - 0x913913 ]. org . pythonmac . не указано . fixcatalystlibs [ 11722 ] AttributeError : объект 'module' не имеет атрибута 'TickCount' .

Обновление для ответа Барри: проблема в том, что приложение, созданное py2app при запуске, дает мне:

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

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

Я добавил VERSIONER_PYTHON_PREFER_32_BIT = yes в мой .bash_profile, но приложение, которое создает py2app, все еще имеет ту же проблему. Интерпретатор python, однако, доволен 32-разрядным исправлением. Но все же нужно решение py2app.

python,macos,py2app,

2

Ответов: 4


2 принят

Так как сломанный код использовался только для эмуляции argv, мне удалось заставить мое приложение работать, отключив эмуляцию argv. Это можно сделать, установив ключ «argv_emulation» в хэш-настройке py2app OPTIONS равным False.

Пример:

Carbon.Evt

1

Код, который я использовал, требует использования argv_emulation, поэтому вышеупомянутые решения мне не помогли. В конце концов, я использовал LSArchitecturePriority в файле plist, установив его на i386. Это решило мою проблему и позволило мне сохранить значение argv_emulation равным True.

Более подробную информацию можно найти здесь: http://developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#/


0

Python работает в 64-битном режиме по умолчанию в Snow Leopard. Похоже, что man pythonпереход к полной 64-разрядной совместимости не прошел. Вы можете подтвердить это, пытаясь запустить в 32-битном режиме (см. ):oso:~ barry$ export VERSIONER_PYTHON_PREFER_32_BIT=yes oso:~ barry$ python Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import Carbon.Evt as evt >>> evt.TickCount() 2973070 >>>

py2app

Таким образом, либо работайте py2appв 32-битном режиме, либо расскажите нам, что вы пытаетесь сделать, и, возможно, мы сможем предоставить 64-битную совместимую альтернативу.


0

Вероятно, самым простым решением является использование другого 32-битного Python вместо поставляемого Apple в 10.6 - например, установите Python 2.6 с помощью установщика python.org . Если вы хотите распространять свое приложение как автономное приложение, которое можно использовать в нескольких версиях OS X, вам все равно придется это делать.

питон, MacOS, py2app,
Похожие вопросы