我已经在python中编写了我的程序。它写在七个文件中,在我导入自定义包的三个文件中。问题是我无法将我的程序构建到exe中。我试过pyinstaller 1.5.1和py2exe。我已经按照我能找到的每个教程,但没有成功。每当我尝试运行exe创建时,我都会收到一条错误消息,说它无法找到我的自定义包。我想我还没有能够将完整的软件包内置到exe中。请帮忙。
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
mfcfiles = [os.path.join(mfcdir, i) for i in ["mfc90.dll", "mfc90u.dll", "mfcm90.dll", "mfcm90u.dll", "Microsoft.VC90.MFC.manifest"]]
data_files = [("Microsoft.VC90.MFC", mfcfiles),]
setup(
data_files = data_files,
options = {'py2exe': {'optimize': 2}},
windows = [{'script': "LoadFilesGUI.py"}],
zipfile = "shared.lib",
)
另一:
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'optimize': 2}},
windows = [{'script': "LoadFilesGUI.py"}],
zipfile = None,
console=['LoadFilesGUI.py'],
)
答案 0 :(得分:2)
通过“自定义包”,我假设您的意思是构成应用程序的自定义python模块。我可能建议尝试使用setup()调用的“includes”选项来手动指定应包含的python模块,以防它们未被自动发现:
setup(
windows = [{'script': "LoadFilesGUI.py"}],
data_files = data_files,
zipfile = None,
options = {
'py2exe': {
'optimize': 2,
'bundle_files': 1,
'includes' : [],
}
},
)
例如,在我使用PyQt4的项目中,我的包含如下所示:
options={
"py2exe": {
"includes" : ['sip','PyQt4.QtCore','PyQt4.QtGui',
'PyQt4.QtNetwork','PyQt4.QtWebKit']
}
}
您的setup.py脚本的其余部分似乎非常标准。确保包含的模块是PYTHONPATH的一部分,或者与项目相关,或者显式添加到路径中。
如果您在评论中说明MyPackage
是项目中的一个软件包,那么您需要:'includes' : ['MyPackage']
如果这仍然给你带来错误,那么问题可能出在你的项目和包的结构上,或者你的PYTHONPATH
答案 1 :(得分:0)
cx_freeze就是答案。
根据我的经验,这是最可靠的选择。 有时它会错过某些依赖项,但是一旦发现缺少的内容,就可以轻松地手动添加它。