2013-02-19 4 views
1

Я делаю пакет Python/PyObjC для использования некоторых витых функций из приложения Objective-C.Реактор с скрученным сердечником и CFNetwork в комплекте py2app

мне нужно установить реактор ядра Foundation в моем Python App:

from twisted.internet import cfreactor 
cfreactor.install() 

Проблема заключается в том, что, когда я построить связку с py2app, требуемая структура CFNetwork никогда не появляется в моей пачке, и когда я загружаю пакет из моего приложения Objetive-C, он разбился.

Существует какой-либо способ принудительного соединения рамки CFNetwork? Почему эта структура не добавлена ​​автоматически?

ответ

2

Включая пакеты, которые не автоматически обнаружены легко: просто добавить недостающие модули для вашего setup.py файла:

setup(
    ... 
    options=dict(
     py2app=dict(
     includes=["module1", "module"], 
    ), 
    ), 
    ... 
) 

Я не знаю, почему CFNetwork не включена автоматически, код для cfreactor не следует путать py2app таким образом (то есть импорт выполняется с использованием регулярных операторов импорта и не скрыт в коде C или импорт звонков).

Можете ли вы воспроизвести эту проблему, используя небольшой проект-образец (например, тривиальный плагин SystemPreferences)? Это облегчило бы отладку проблемы.

Кроме того, какие версии Twisted, PyObjC и py2app вы используете?

+1

Я думаю, что проблема в том, что pyobjc не найден в моей $ PYTHONPATH. Я тестирую с помощью простого скрипта: 'импорт ObjC импорт CFNetwork печати«Hello'' И я получил "ImportError: Нет модуль с именем CFNetwork", но мой $ PYTHONPATH содержит «~/Devel/UbuntuOne/scripts/devsetup/eggs ", и эта папка содержит" pyobjc_core-2.5.0b1-py2.7-macosx-10.6-x86_64.egg "и" pyobjc_framework_Cocoa-2.5.0b1-py2.7-macosx-10.6-x86_64.egg "яйца , Любая идея? – user1204395

+0

Добавление «/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC» к моему $ PYTHONPATH работает отлично, спасибо за вашу помощь! – user1204395

 Смежные вопросы

  • Нет связанных вопросов^_^