2011-08-09 3 views
4

Lionにアップグレードする前にpy2appで正常にパッケージ化されたPythonスクリプトがあります。py2app on Lionは、Pythonフレームワークまたはリソースなしで空のアプリケーションを作成しています

私はpy2appを実行するとエラーなしで完了しますが、生成される.appは216Kのみで、実行時にobjcが不足していると不平を言います(これはスクリプトの最初の読み込みです)。

py2app出力:

アプリ実行
running py2app 
creating /Users/byron/Dropbox/dev/Hours-Worked/build 
creating /Users/byron/Dropbox/dev/Hours-Worked/build/bdist.macosx-10.7-intel 
creating /Users/byron/Dropbox/dev/Hours-Worked/build/bdist.macosx-10.7-intel/python2.7-semi_standalone 
creating /Users/byron/Dropbox/dev/Hours-Worked/build/bdist.macosx-10.7-intel/python2.7-semi_standalone/app 
creating /Users/byron/Dropbox/dev/Hours-Worked/build/bdist.macosx-10.7-intel/python2.7-semi_standalone/app/collect 
creating /Users/byron/Dropbox/dev/Hours-Worked/build/bdist.macosx-10.7-intel/python2.7-semi_standalone/app/temp 
creating /Users/byron/Dropbox/dev/Hours-Worked/dist 
creating build/bdist.macosx-10.7-intel/python2.7-semi_standalone/app/lib-dynload 
creating build/bdist.macosx-10.7-intel/python2.7-semi_standalone/app/Frameworks 
*** using recipe: virtualenv *** 
*** filtering dependencies *** 
376 total 
372 filtered 
0 orphaned 
4 remaining 
*** create binaries *** 
*** byte compile python files *** 
byte-compiling /Library/Python/2.7/site-packages/py2app-0.6.3-py2.7.egg/py2app/bootstrap/boot_app.py to boot_app.pyc 
byte-compiling /Library/Python/2.7/site-packages/py2app-0.6.3-py2.7.egg/py2app/bootstrap/chdir_resource.py to chdir_resource.pyc 
byte-compiling /Library/Python/2.7/site-packages/py2app-0.6.3-py2.7.egg/py2app/bootstrap/disable_linecache.py to disable_linecache.pyc 
byte-compiling /Users/byron/Dropbox/dev/Hours-Worked/hours-worked.py to hours-worked.pyc 
*** creating application bundle: Hours-Worked *** 
copying hours-worked.py -> /Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Resources 
creating /Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Resources/lib 
creating /Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Resources/lib/python2.7 
copying build/bdist.macosx-10.7-intel/python2.7-semi_standalone/app/site-packages.zip -> /Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Resources/lib/python2.7 
creating /Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Resources/lib/python2.7/lib-dynload 
creating /Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Frameworks 
stripping Hours-Worked 
stripping saved 15936 bytes (71424/87360) 

$ ./dist/Hours-Worked.app/Contents/MacOS/Hours-Worked 
Traceback (most recent call last): 
    File "/Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Resources/__boot__.py", line 31, in <module> 
    _run('hours-worked.py') 
    File "/Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Resources/__boot__.py", line 28, in _run 
    execfile(path, globals(), globals()) 
    File "/Users/byron/Dropbox/dev/Hours-Worked/dist/Hours-Worked.app/Contents/Resources/hours-worked.py", line 3, in <module> 
    import objc 
ImportError: No module named objc 
2011-08-09 15:27:40.306 Hours-Worked[16825:707] Hours-Worked Error 

のように生成されたアプリが見えます:

$ du -hs Hours-Worked.app/Contents/* 
4.0M Hours-Worked.app/Contents/Frameworks 
4.0K Hours-Worked.app/Contents/Info.plist 
188K Hours-Worked.app/Contents/MacOS 
4.0K Hours-Worked.app/Contents/PkgInfo 
12M Hours-Worked.app/Contents/Resources 
:それがどのように見えるのに使用

$ du -hs dist/Hours-Worked.app/Contents/* 
    0B dist/Hours-Worked.app/Contents/Frameworks 
4.0K dist/Hours-Worked.app/Contents/Info.plist 
76K dist/Hours-Worked.app/Contents/MacOS 
4.0K dist/Hours-Worked.app/Contents/PkgInfo 
132K dist/Hours-Worked.app/Contents/Resources 

答えて

0

setup.pyファイルが表示されていない場合は、PyObjCライブラリを明示的に指定していない可能性があります。たとえば、

from setuptools import setup 

OPTIONS = {'argv_emulation': False, 
      'includes': ['objc'], 
      } 
setup(
    app='myapp.app', 
    options={'py2app': OPTIONS}, 
    setup_requires=['py2app'], 
) 

は、objcライブラリを含めるようにpy2appを強制します。すでにこれを行っているなら、あなたのsetup.pyスクリプトを見るのが役に立ちます。

+0

PyObjCが明示的に含まれていない場合、py2appはライブラリが使用されていることを検出し、自動的にそれを含むことを検出します。 –

関連する問題