py2app在较早版本的OS X上出现PIL错误导致崩溃

3
有人之前提出了类似的问题:https://stackoverflow.com/questions/23600028/py2app-app-crashes-on-earlier-mac-os-x-versions 我的应用程序在我的机器上运行良好(OSX 10.9.4),但是当我将它移动到另一台运行10.7.5的机器上时,应用程序在启动时会崩溃。我在控制台中得到以下信息:
Traceback (most recent call last):
    File "/PATH_TO_APP/APP.app/Contents/Resources/__boot__.py", line 3
        _recipes_pil_prescript(['Hdf5SubImagePlugin', 'FitsStubImagePlugin', 'SunImagePlugin', 'GbrImagePlugin', 'Jpeg2KImagePlugin', 'MicImagePlugin', 'FpxImagePlugin', ImImagePlugin', ...
    File "/PATH_TO_APP/APP.app/Contents/Resources/__boot__.py, line 3
        from PIL import Image
    File "PIL/Image.pyc", line 62, in <module>
    File "PIL/_imaging.pyc", line 14, in <module>
    File "PIL/_imaging.pyc", line 10, in __load
ImportError: dlopen(/PATH_TO_APP/APP.app/Contents/Resources/lib/python2.7/lib-dynload/PIL/_imaging.so, 2): Symbol not found: ___sincos_stret
    Referenced from /PATH_TO_APP/APP.app/Contents/Resources/lib/python2.7/lib-dynload/PIL/_imaging.so
    Expected in: /usr/lib/libSystem.B.dylib
    in /PATH_TO_APP/APP.app/Contents/Resources/lib/python2.7/lib-dynload/PIL/_imaging.so

之前,为了解决这个错误,我只是卸载了pillow。我不确定为什么会将pillow库添加到应用程序中,因为我并不认为我在使用它。但现在,在尝试这个解决方法时,我又遇到了另一个错误:

Traceback (most recent call last):
    File "/PATH_TO_APP.app/APP.app/Contents/Resources/__boot__.py", line 384, in <module> _recipes_pil_prescript([])
    File "/PATH_TO_APP.app/APP.app/Contents/Resources/__boot__.py", line 344, in _recipes_pil_prescript from PIL import Image
    File "/usr/local/lib/python2.7/site-packages/PIL/Image.py", line 62, in <module>
ImportError cannot import name _imaging

很显然我现在不知道怎么使用PIL了。我的脚本引入了以下内容:

from __future__ import division
import easygui as eg
import os, zlib, re, datetime, getpass, tkMessageBox, sys
import zipfile as z
import Tkinter as tk
from tkFileDialog import askdirectory
from optparse import OptionParser

这是我的setup.py文件:
from setuptools import setup

APP = ['zipperscript.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True, 'excludes': ['']}

setup(
    app=APP,
    name="Zipperscript_HI_50",
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
    version="Hawaii branch 4.0.50"
)

我不确定操作系统版本是否导致了问题,但这是我目前的理论。我不知道该怎么继续。非常感谢任何帮助或建议。


问题解决了..有点。我在setup.py中将PIL添加到排除列表中。不幸的是,未来很可能会被要求操作图像...所以这只是一个临时解决方案,除非有一种不使用PIL的PIL替代品。 - joe
我现在需要处理图片。如果有人有任何见解,我会非常感激。 - joe
跟进万一其他人有同样的问题。我在可移动硬盘上安装了旧版本的OS X,需要构建时从该硬盘启动。虽然有些麻烦但它能用。 - joe
我遇到了同样的问题。如果我找到任何解决方法,我会在这里发布。 - Chris Lucian
1个回答

0

我在 Mac OS 10.8.5 上使用 buildout 时遇到了类似的问题。看起来 Pypi 上提供的预编译软件包是在较新版本的 OS X 上编译的,而对较旧版本的测试不足。

解决方法是从源代码安装 pillow。下载源代码后,运行 pip install your_downloaded_file。您可能需要先安装依赖项,如 libjpeg 和 zlib。

这样做之后,我不再遇到错误,已成功安装了 pillow 版本 5.4.0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接