无法使用py2exe将两个.py文件编译为独立的可执行文件

时间:2014-11-25 16:09:00

标签: python python-3.x

我无法将两个.py文件编译成不需要使用py2exe安装的独立可执行文件。我按照this post post上的说明编写了我的设置文件,如下所示:

from distutils.core import setup
import py2exe
import sys, os

setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
    windows=[{'script': "main.py"}],
    zipfile = None,
    )

我的问题是,我有两个.py files,我的主文件main.py和我的background_image.py文件(包含基本64个图像字符串)。因此,py2exe分别编译这两个文件,如此图所示:

enter image description here

因此,当我尝试运行主编译文件时收到以下错误。

Traceback (most recent call last):
  File 'main.py", line 8, in <module>
ImportError: No Module named 'background_image'

这是我main.py程序的简化版本;该程序绘制一个带背景的画布。

import tkinter as tk     
from PIL import ImageTk, Image
import background_images

#image variables
background = images.background_image
close_icon = images.close_icon

#root window creation
root=tk.Tk()
root.geometry(600, 600)

#canvas widget
photo = tk.PhotoImage(data=background)
width, height = photo.width(), photo.height()
canvas = tk.Canvas(root, width=width, height=height, bd=-2)
canvas.pack()
canvas.create_image(0, 0, image=photo, anchor="nw")

root.mainloop()

这里缩短了background_images.py

的background_image
background_image = """
iVBORw0KGgoAAAANSUhEUgAA #... continues on
"""

2 个答案:

答案 0 :(得分:0)

将背景图像添加为数据文件:

setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
    windows=[{'script': "main.py"}],
    zipfile = None,
    data_files= [ ("prog",["background_image.py"])]
    )

答案 1 :(得分:0)

不要使用bundle_files = 1,它有太多问题。建议使用bundle_files = 2然后使用例如InnoSetup创建一个文件安装程序。如果这还没有解决,请提供main.py的一个小的自包含样本,加上bg_image.py和setup.py。