Я создаю отдельное приложение на python3 для друга, который ничего не знает о коде. Для этого приложения я использую несколько модулей, включая tkinter
и openpyxl
. Я использую py2app
, чтобы сделать мое приложение.
Даже если часть программы с графическим интерфейсом работает, методы, использующие модуль 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, поэтому проблем там нет.
Я заметил, что эта проблема не нова, и нашел несколько потоков, в том числе:
- Использование py2app с tkinter и openpyxl и несколькими файлами? : но файл .egg появляется только в python 2.X
, а не в python 3
, поэтому я не знаю, как его интерпретировать
- Перемещение констант в файл конфигурации нарушает py2exe и py2app : это как раз моя проблема, поэтому я следовал патчу , сделанному для этого в 08/2017
К сожалению, новый файл openpyxl __init__.py
больше не содержит ссылок на файлы .json.
Так что сейчас я в растерянности. Есть идеи?
* Редактирование: использование точно такого же кода, но с модулем xlwings
вместо модуля openpyxl
работает отлично. Но первый открывает файлы для работы в них. Это медленно (имо) не очень приятно работать.