Как исправить "Модули не найдены", используя py2app? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь преобразовать свой код Python в автономное приложение для Mac.Я могу успешно запустить python setup.py py2app, но получаю предупреждение:

Modules not found (conditional imports): * StringIO (docx.compat) * _frozen_importlib_external (importlib._bootstrap) * java (platform) * java.lang (platform)

, и мое приложение вылетает при попытке его использовать.

Вот мойкод Python:

# importing tkinter and tkinter.ttk 
# and all their functions and classes 
from tkinter import * 
from tkinter.ttk import *

# importing askopenfile function 
# from class filedialog 
from tkinter.filedialog import askopenfile 

csv_file_name = ""

root = Tk()
root.withdraw() # Hides the tkinter window
filename = askopenfile(parent=root,mode='r',filetypes=[('CSV file','*.csv')],title='Choose a CSV file')
if filename != None:
    # print(filename.name) 
    csv_file_name = filename.name

if csv_file_name != "":
    import csv
    data = []
    with open(csv_file_name, newline='') as csvfile:
        reader = csv.reader(csvfile, delimiter=',', quotechar='|')
        for row in reader:
            data.append(row)
    # print(data)

    from docx import *

    document = Document()

    table = document.add_table(rows=0, cols=3)
    table.style = 'Table Grid' 
    for person in data:
        time = person[0]
        actor = person[1] + " " + person[2]
        role = person[3]
        agent = person[4]
        row_cells = table.add_row().cells
        row_cells[0].text = time + "\n" + actor + "\n" + role + "\n" + agent + "\n" + "# ________"

    document.add_page_break()

    desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop')

    document.save(desktop + '/demo.docx')

Я пытался исправить это в течение нескольких часов, но безуспешно.Я просто не понимаю, как исправить проблему с отсутствующими модулями.

РЕДАКТИРОВАТЬ:

Вот мой файл setup.py:

"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['csv2word.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
...