python 3:py2app“未找到模块(无条件导入)”

时间:2019-01-24 23:42:55

标签: python python-3.x openpyxl py2exe py2app

我正在为一个对代码一无所知的朋友构建一个独立的python3应用程序。对于此应用程序,我使用多个模块,包括tkinteropenpyxl。我使用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)运作起来很慢,很慢。

0 个答案:

没有答案