【问题标题】:exe conversion of python 2.7 scriptpython 2.7脚本的exe转换
【发布时间】:2017-07-24 10:50:07
【问题描述】:

我在 python 2.7 中编写了一个 python 脚本,在使用 py2exe 包对该文件进行 exe 转换后我遇到了一个问题。我有 exe 文件,但是当我运行时,我收到了一个错误,我在下面提到。请注意,我保存了名为 test.py 的脚本文件。请告诉我问题@Bryan Oakley

from Tkinter import *
import os
from os.path import expanduser
import time
import datetime
from docx import Document
from docx.shared import Inches

document = Document()
docx_prefix = "Doc_File_"

home_directory = expanduser("~")
folder_directory = home_directory + "\myapp"
doc_file_directory = folder_directory + "/"

if not os.path.exists(folder_directory):
    os.makedirs(folder_directory)

def create_file():

        now = datetime.datetime.now()
        current_time = now.strftime("%Y-%m-%d %H%M%S")
        file_name =  docx_prefix + current_time

        document = Document()

        document.add_paragraph("word document")
        document.save(doc_file_directory + file_name + '.docx')

main_root = Tk()
main_root.title("Toolbar")
main_root.geometry('105x26+1+1')

toolbar = Frame(main_root, bg="gray")
toolbar.pack(side="top")

create_file_button = Button(toolbar, text="Create File", command = 
create_file, bg="gray", width=10)
create_file_button.pack(side="left")

main_root.mainloop()

使用py2exe转换exe的设置文件:

from distutils.core import setup
import py2exe
setup(
    console=['test.py'],
    options = {'py2exe': {'packages' : ['docx']}}
)

exe转换后出现如下错误:

C:\Python27\Lib\site-packages\py2exe\samples\scripting\dist>test.exe
Traceback (most recent call last):
File "test.py", line 6, in <module>
File "docx\__init__.pyc", line 3, in <module>
File "docx\api.pyc", line 14, in <module>
File "docx\package.pyc", line 11, in <module>
File "docx\opc\package.pyc", line 12, in <module>
File "docx\opc\part.pyc", line 12, in <module>
File "docx\opc\oxml.pyc", line 12, in <module>
File "lxml\etree.pyc", line 12, in <module>
File "lxml\etree.pyc", line 10, in __load
File "src/lxml/lxml.etree.pyx", line 92, in init lxml.etree 
(src\lxml\lxml.etree.c:225327)
ImportError: cannot import name _elementpath

【问题讨论】:

    标签: python python-2.7 tkinter py2exe


    【解决方案1】:

    模块lxml 不是纯Python。它依赖于用 C 编写的 DLL。您需要在 py2exe 包中添加 etree.pydobjectify.pyd。他们在site-packages\lxml

    【讨论】:

    • 能否发送更新的安装文件进行exe转换?
    • 要做到这一点并对其进行测试,我需要您的环境的完整副本,除此之外,您正在使用不同的操作系统。这是一项艰巨的任务。查看 py2exe 文档寻求帮助,您可能会发现这个 SO 问题很有用:stackoverflow.com/questions/220777/…
    • 你能告诉我 python-docx 包的替代方案意味着我可以使用其他包来完成这项任务吗?
    • @Bryan Oakley 请回答这个问题。
    猜你喜欢
    • 2020-11-23
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2021-09-25
    • 1970-01-01
    相关资源
    最近更新 更多