我有一个Python 3.4和GTK + 3的项目。我在Windows XP SP3 32位(VirtualBox)上。
我需要使用py2exe编译成可执行文件。 (不要建议使用cx_freeze。这个项目的问题比py2exe高十倍。)
我的setup.py如下。
#!/usr/bin/python
from setuptools import setup
import py2exe
setup(name="Redstring",
version="2.0",
description="REDundant STRING generator",
author="MousePaw Labs",
url="http://www.mousepawgames.com/",
maintainer_email="info@mousepawgames.com",
data_files=[("", ["redstring.png", "redstring_interface.glade"])],
py_modules=["redstring"],
windows=[{'script':'redstring.py'}],
options={"py2exe":{
"unbuffered": True,
"compressed":True,
"bundle_files": 1,
'packages':['gi.repository'],
}},
zipfile=None
)
当我通过C:\Documents and Settings\Jason\Desktop\redstring2>python setup.py py2exe
运行时,我得到以下输出(完整)。
running py2exe
running build_py
1 missing Modules
------------------
? gi.repository.Gtk imported from __SCRIPT__
Building 'dist\redstring.exe'.
C:\Documents and Settings\Jason\Desktop\redstring2>
实际脚本redstring.py
在我的Windows环境中顺利运行。在那里,我有以下(工作)代码行:from gi.repository import Gtk
这就是我从整个项目中的gi.repository导入的所有内容。
如果我将setup.py中的行交换为'packages':['gi'],
,则错误输出会切换到大约24个奇数缺失的模块,所有这些模块都属于gi.repository。如果我尝试导入" Gtk"或" gi.repository.Gtk"在'packages':
或'includes':
中,我收到的错误是找不到要导入的文件。
我今天在#python(IRC频道)上花了八个小时,没人能解决这个问题。本周我需要打包到Windows二进制文件。
注意:This question不重复;虽然这是一个类似的问题,但它是a)不一样的错误信息,b)两个答案都没有以任何方式解决问题。
答案 0 :(得分:1)
首先,我解决了这个问题,降级到Python 2.7。 (GTK + 3.8仍然没问题。)py2exe显然已经知道了Python 3的问题。
其次,我换了......
options={"py2exe": {
"bundle_files": 1,
}
到
options={"py2exe": {
"bundle_files": 3,
}
出于某种原因,当'bundle_files'
设置为1
或2
时,py2exe无法包含运行gi库所需的某些文件。
可以在GitHub找到适用于我的项目的py2exe的完整setup.py。我使用python setup.py py2exe
在cmd上运行它。