2015-05-30 6 views
0

У меня довольно сложный скрипт python, который я пытаюсь cx_freeze, однако, когда я запускаю исполняемый файл, я продолжаю получать ту же ошибку и, похоже, связан с модулем docx.Cx_freeze exe не удалось полностью импортировать docx

Я использую Python 3.3.5 с docx 0.7.6-py33 на машине под Windows 8.1.

Это мой сценарий установки.

from cx_Freeze import setup, Executable 

includefiles = ['logo.ico','db.db','dbloc.bin'] 
includes = [] 
excludes = [] 
packages = ['tkinter','docx','sys', 'sqlite3', 'os', 'hashlib', 'random', 'uuid', 'base64', 'tempfile', 'win32api', 
      'winreg', 'ntplib', 'winsound', 'time', 'csv', 'webbrowser', 'inspect','datetime', 'decimal', 'ctypes', 
      'win32com.client','operator'] 

exe = Executable(
# what to build 
    script = "NEPOS.py", 
    initScript = None, 
    base = 'Win32GUI', 
    targetName = "Nepos.exe", 
    copyDependentFiles = True, 
    compress = True, 
    appendScriptToExe = True, 
    appendScriptToLibrary = True, 
    icon = 'Icon.ico' 
) 

setup(
    name = "MyProgram", 
    version = "1.0.0", 
    description = 'Description', 
    author = "Joe Bloggs", 
    author_email = "[email protected]", 
    options = {"build_exe": {"excludes":excludes,"packages":packages, 
     "include_files":includefiles}}, 
    executables = [exe] 
) 

Это ошибка, которую я получаю.

enter image description here

Похоже, что испытывает проблемы с поиском методов, которые принадлежат к DOCX, но мой исходный код вызывает import docx и она указана в качестве зависимого модуля в файле настройки, так что я не знаю, почему они Арен Не включается.

ответ

2

После того, как я начал беспорядок, я, наконец, взломал это. Модуль docx зависит от lxml. Несмотря на то, что исходный файл .py работает отлично, только импортированный docx, когда cx_freezing вам нужно явно указать зависимость, добавив lxml к пакетам.

+1

Это была часть lxml, но она пропустила другую часть, которую нужно было включить. –

+0

Я также заметил, что шаблоны docx не включены в 'library.zip', созданный cx_freeze. Редактирование этого замораживания после публикации в библиотеке дает мне больше ошибок, поэтому я переместил шаблон (который является просто пустым файлом docx) в прямом и прямом открытии его, а не просто в документе(). –

+0

Привет, я знаю, что я опаздываю, но как вы это сделали? @I_do_python – aaossa

Смежные вопросы