我正在为一个对代码一无所知的朋友构建一个独立的python3应用程序。对于此应用程序,我使用多个模块,包括tkinter
和openpyxl
。我使用py2app
来制作我的应用。
即使程序的GUI部分起作用,使用openpyxl
模块的方法也不起作用。正如我的终端显示的那样:
Modules not found (unconditional imports):
* StringIO.StringIO (pkg_resources._vendor.six)
* _gdbm (dbm.gnu)
* cjkwrap (texttable)
* com (com.sun.jna)
* com.jna (com.sun)
* com.sun (com.sun.jna.platform)
* copy_reg (pyexcel_io._compact)
* defusedxml (openpyxl.xml.functions)
* itertools.izip (ctypes.macholib.dyld)
* itertools.izip_longest (ctypes.macholib.dyld)
* lxml (openpyxl.conftest, openpyxl.xml.functions)
* lxml.LXML_VERSION (lxml.etree)
* lxml.etree.Element (openpyxl.conftest, openpyxl.xml)
* lxml.etree.ElementTree (openpyxl.conftest, openpyxl.xml)
* lxml.etree.LIBXML_VERSION (openpyxl.xml, openpyxl.xml.functions)
依此类推...
现在我首先以为我的setup.py
文件是错误的,所以我调查了一下。尽管我对选项argv_emulation
仍然感到困惑,但我认为它是正确的。
from setuptools import setup
APP = ['foo.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': False,
'includes': ['time', 'openpyxl', 'pyexcel', 'os', 'platform', 'tkinter']}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
python代码有效,我已经在Mac VM上对其进行了测试,所以那里没有问题。
我注意到这个问题并不是新问题,并且发现了多个线程来处理它,包括:
-Using py2app with tkinter and openpyxl and multiple files?:但是.egg文件仅出现在python 2.X
中而不出现在python 3
中,因此我不知道如何解释
-Moving constants to a configuration file breaks py2exe and py2app:这正是我的问题,所以我遵循了patch made for this in 08/2017
不幸的是,新的openpyxl __init__.py
文件不再包含任何指向.json文件的链接。
所以现在我很茫然。有任何想法吗?
* Edit:使用完全相同的代码,但使用xlwings
模块而不是openpyxl
模块可以完美地工作。但是前者打开文件以在其中工作。 (imo)运作起来很慢,很慢。