使用py2app打包的PySide应用在其他电脑上无法正常工作

0 投票
1 回答
1103 浏览
提问于 2025-04-17 07:56

我有一个小应用程序,想用py2app打包。最开始我遇到了一个问题,就是打包后PySide没有正确链接,不过我解决了这个问题(至少在本地解决了),方法是在最终构建的容器里的__boot__.py文件中添加了sys.path.insert(0, os.path.join(os.getcwd(), 'lib', 'python2.6','lib-dynload'))

打包完成后,在我的电脑上运行得很好。不幸的是,在另一台电脑上运行时却出现了这个问题:

Traceback (most recent call last):
  File "/Volumes/code/dailies/dist/Sequence Dailies.app/Contents/Resources/__boot__.py", line 32, in <module>
    _run('dailies_v04.py')
  File "/Volumes/code/dailies/dist/Sequence Dailies.app/Contents/Resources/__boot__.py", line 29, in _run
    execfile(path, globals(), globals())
  File "/Volumes/code/dailies/dist/Sequence Dailies.app/Contents/Resources/dailies_v04.py", line 9, in <module>
    from PySide.QtCore import *
  File "PySide/__init__.pyc", line 2, in <module>
  File "PySide/private.pyc", line 2, in <module>
  File "PySide/QtCore.pyc", line 18, in <module>
  File "PySide/QtCore.pyc", line 11, in __load
ImportError: dlopen(/Volumes/code/dailies/dist/Sequence Dailies.app/Contents/Resources/lib/python2.6/lib-dynload/PySide/QtCore.so, 2): Library not loaded: libpyside-python2.6.1.0.dylib
  Referenced from: /Volumes/code/dailies/dist/Sequence Dailies.app/Contents/Resources/lib/python2.6/lib-dynload/PySide/QtCore.so
  Reason: image not found

我是不是漏掉了什么步骤,导致PySide没有正确链接?这是我的(不太有趣的)setup.py

from setuptools import setup

APP = ['dailies_v04.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': False}

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

1 个回答

0

options里,你应该添加

'includes': 'PySide'

如果这样做不管用,有时候我发现把需要的模块放在设置脚本的最上面导入会有帮助。

所以把下面的内容改成:

from setuptools import setup

改成

from setuptools import setup
import PySide

撰写回答