python - python 3:py2app“未找到模块(无条件导入)”
问题描述
我正在为一个对代码一无所知的朋友构建一个独立的 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上测试它,所以那里没有问题。
我注意到这个问题并不是新问题,并且发现了多个线程处理它,包括:
-将 py2app 与 tkinter 和 openpyxl 以及多个文件一起使用?:但是 .egg 文件只出现在python 2.X
not inpython 3
所以我不知道如何解释它
-将常量移动到配置文件会破坏 py2exe 和 py2app:这正是我的问题,所以我遵循了08/ 中为此制作的补丁2017
不幸的是,新的 openpyxl__init__.py
文件不再包含任何指向 .json 文件的链接。
所以现在我很茫然。有任何想法吗 ?
*编辑:使用完全相同的代码,但使用xlwings
模块而不是openpyxl
模块可以完美地工作。但前者打开文件以在其中工作。这很慢,(imo)不太适合使用。
解决方案
推荐阅读
- aem - 如何在 AEM Sightly/HTL 中获取 HTTP 标头值
- c++ - 在 C++ 中预期自动删除时,这是静态的正确用法吗?
- sass - SCSS:动态定位具有与父级相同前缀类的子级?
- jenkins - 由 Jenkins 管道中的参数化 Cron 触发
- twitter - Twitter 不会让我添加 127.0.0.1 作为回调 URL?
- javascript - 无法读取未定义的属性“ItemID”
- git - 无法在 Docker 中使用具有 git 依赖项的货物补丁
- sql - 无法从 Excel 中的 Azure Sql Server 获取数据
- python - 如何在pygame窗口和功能之间转换
- ios - TVOS - 应用图标必须至少有 2 层具有适用的内容问题