python 3: py2app "Модули не найдены (безусловный импорт)" - PullRequest
0 голосов
/ 25 января 2019

Я создаю отдельное приложение на 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 работает отлично. Но первый открывает файлы для работы в них. Это медленно (имо) не очень приятно работать.

...