关于python文件转化exe

时间:2023-02-06 06:41:13
我用python写了好几个py文档,里面涉及了pyqt、numpy和matplotlib等

然后由于我想将其打包成一个exe让普通pc(没装py)都可以运行,然后就去查了很多资料,
找到了gui2exe这种工具(就是因为不知道如何将几个py文档打包成一个exe文件),按照要求安装了wxpython、py2exe。我使用的是64位的py27
最后运行gui2exe时,出现了这种问题
关于python文件转化exe
下面是里面详细:

#---- System Information ----#
GUI2Exe Version: 0.5.0
Operating System: Windows 7 (build 7601, Service Pack 1), 64-bit edition
Python Version: 2.7.9 (default, Dec 10 2014, 12:28:03) [MSC v.1500 64 bit (AMD64)]
wxPython Version: 3.0.2.0 msw (classic)
wxPython Info: (__WXMSW__, wxMSW, unicode, wx-assertions-on, SWIG-1.3.29)
Python Encoding: Default=mbcs  File=mbcs
wxPython Encoding: utf-8
System Architecture: 64bit AMD64
Byte order: little
Frozen: False
#---- End System Information ----#

#---- Traceback Info ----#
*** 03 五月 2015 @ 16:59:53 ***
Traceback (most recent call last):
  File "C:\Users\Tim\Desktop\GUI2Exe_0.5.0\GUI2Exe\GUI2Exe.py", line 4080, in <module>
    app = GUI2ExeApp(0)
  File "C:\Python27\lib\site-packages\wx-3.0-msw\wx\_core.py", line 8628, in __init__
    self._BootstrapApp()
  File "C:\Python27\lib\site-packages\wx-3.0-msw\wx\_core.py", line 8196, in _BootstrapApp
    return _core_.PyApp__BootstrapApp(*args, **kwargs)
  File "C:\Users\Tim\Desktop\GUI2Exe_0.5.0\GUI2Exe\GUI2Exe.py", line 3963, in OnInit
    splash = GUI2ExeSplashScreen(self)
  File "C:\Users\Tim\Desktop\GUI2Exe_0.5.0\GUI2Exe\GUI2Exe.py", line 3840, in __init__
    bmp = catalog["gui2exe_splash"].GetBitmap()
  File "C:\Python27\lib\site-packages\wx-3.0-msw\wx\lib\embeddedimage.py", line 48, in GetBitmap
    return wx.BitmapFromImage(self.GetImage())
  File "C:\Python27\lib\site-packages\wx-3.0-msw\wx\lib\embeddedimage.py", line 63, in GetImage
    return wx.ImageFromStream(stream)
  File "C:\Python27\lib\site-packages\wx-3.0-msw\wx\_core.py", line 3721, in ImageFromStream
    val = _core_.new_ImageFromStream(*args, **kwargs)
PyAssertionError: C++ assertion "strcmp(setlocale(LC_ALL, NULL), "C") == 0" failed at ..\..\src\common\intl.cpp(1449) in wxLocale::GetInfo(): You probably called setlocale() directly instead of using wxLocale and now there is a mismatch between C/C++ and Windows locale.
Things are going to break, please only change locale by creating wxLocale objects to avoid this!

#---- End Traceback Info ----#
实在搞不懂,求助求助

11 个解决方案

#1


谢邀,水平有限,没法解答你的问题。
我只用过pyinstall,要不你试试。

#2


像是gui2exe或wx的一个bug. 试试这儿的建议, 改动一下gui2exe的代码.

http://*.com/questions/21444951/wxpython-3-0-breaks-older-apps-locale-error

其实, 你要用的py2exe, 你可以直接用它, 不一定要通过gui2exe来使用它.

#3


引用 1 楼 sinat_16968575 的回复:
谢邀,水平有限,没法解答你的问题。
我只用过pyinstall,要不你试试。

好的谢谢

#4


引用 2 楼 panghuhu250 的回复:
像是gui2exe或wx的一个bug. 试试这儿的建议, 改动一下gui2exe的代码.

http://*.com/questions/21444951/wxpython-3-0-breaks-older-apps-locale-error

其实, 你要用的py2exe, 你可以直接用它, 不一定要通过gui2exe来使用它.

好的,我略过gui2exe这个工具,直接使用py2exe
我首先建立一个Hello.py尝试了一遍,感觉也还不错。
这种是console的,

然后我试试看打包我的py,发觉还是出了问题
Traceback (most recent call last):
  File "lightcompute.py", line 9, in <module>
ImportError: No module named compute

我知道是什么意思,就是我打包的这个py文件,里面import的另外一个文件它不能跟着打包,请问有什么好的解决方法吗

总的思路是这样,现在有A、B、C、D四个py文件
A import B、C、D
B import C、D
C import D
请问如何是好


#5


引用 2 楼 panghuhu250 的回复:
像是gui2exe或wx的一个bug. 试试这儿的建议, 改动一下gui2exe的代码.

http://*.com/questions/21444951/wxpython-3-0-breaks-older-apps-locale-error

其实, 你要用的py2exe, 你可以直接用它, 不一定要通过gui2exe来使用它.


你好,现在又有了新进展,我在setup.py(我用来打包的脚本)
里面import了我要打包的另外3个py文件,而且将setup.py与这四个py文件都放在同一目录,
打包完成后又出现了一个新问题
ImportError: matplotlib requires dateutil
我肯定有装dateutil这个模块的,不然我的原py文件肯定打不开
如何是好

#6


py2exe使用python的distutils工具, 不能自动检测到import的文件, 需要自己设置.

这儿是setup.py文件文档
https://docs.python.org/2/distutils/setupscript.html

网上应该也能找到一些中文的关于setup.py教程.

#7


引用 6 楼 panghuhu250 的回复:
py2exe使用python的distutils工具, 不能自动检测到import的文件, 需要自己设置.

这儿是setup.py文件文档
https://docs.python.org/2/distutils/setupscript.html

网上应该也能找到一些中文的关于setup.py教程.

好的谢谢

#8


引用 7 楼 f08865 的回复:
Quote: 引用 6 楼 panghuhu250 的回复:

py2exe使用python的distutils工具, 不能自动检测到import的文件, 需要自己设置.

这儿是setup.py文件文档
https://docs.python.org/2/distutils/setupscript.html

网上应该也能找到一些中文的关于setup.py教程.

好的谢谢

英语差,看不懂。。

#9


引用 6 楼 panghuhu250 的回复:
py2exe使用python的distutils工具, 不能自动检测到import的文件, 需要自己设置.

这儿是setup.py文件文档
https://docs.python.org/2/distutils/setupscript.html

网上应该也能找到一些中文的关于setup.py教程.



最后来更新一次吧,在我的setup.py文件里面添加了
import  matplotlib和import  dateutil
然后问题暂时解决,然后去看了看出错文档
出现Could not find the matplotlib data files
接着再谷歌,在文档发现
# Save matplotlib-data to mpl-data ( It is located in the matplotlib\mpl-data
# folder and the compiled programs will look for it in \mpl-data
# note: using matplotlib.get_mpldata_info
data_files = [(r'mpl-data', glob.glob(r'C:\Python25\Lib\site-packages\matplotlib\mpl-data\*.*')),
                    # Because matplotlibrc does not have an extension, glob does not find it (at least I think that's why)
                    # So add it manually here:
                 (r'mpl-data', [r'C:\Python25\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']),
                (r'mpl-data\images',glob.glob(r'C:\Python25\Lib\site-packages\matplotlib\mpl-data\images\*.*')),
                 (r'mpl-data\fonts',glob.glob(r'C:\Python25\Lib\site-packages\matplotlib\mpl-data\fonts\*.*'))]

# for console program use 'console = [{"script" : "scriptname.py"}]
setup(windows=[{"script" : "scriptname.py"}], options=opts,   data_files=data_files)

好的那就建立咯,最后,还是出现了错误
WindowsError: [Error 3] 系統: u'C:\\Python27\\dist\\mpl-data\\stylelib\\*.*'
至此,谷歌也帮不了我。
最后感谢这位大神的帮助,现在转战pyinstaller
谢谢

#10


后来呢?就这样了吗?

#11


哈哈~
在data_files中把stylelib目录加上就OK啦!
接下来,遇到都是module引入问题,sys.path增加路径,一一引入即可!

i am hualingson, no thanks!

#1


谢邀,水平有限,没法解答你的问题。
我只用过pyinstall,要不你试试。

#2


像是gui2exe或wx的一个bug. 试试这儿的建议, 改动一下gui2exe的代码.

http://*.com/questions/21444951/wxpython-3-0-breaks-older-apps-locale-error

其实, 你要用的py2exe, 你可以直接用它, 不一定要通过gui2exe来使用它.

#3


引用 1 楼 sinat_16968575 的回复:
谢邀,水平有限,没法解答你的问题。
我只用过pyinstall,要不你试试。

好的谢谢

#4


引用 2 楼 panghuhu250 的回复:
像是gui2exe或wx的一个bug. 试试这儿的建议, 改动一下gui2exe的代码.

http://*.com/questions/21444951/wxpython-3-0-breaks-older-apps-locale-error

其实, 你要用的py2exe, 你可以直接用它, 不一定要通过gui2exe来使用它.

好的,我略过gui2exe这个工具,直接使用py2exe
我首先建立一个Hello.py尝试了一遍,感觉也还不错。
这种是console的,

然后我试试看打包我的py,发觉还是出了问题
Traceback (most recent call last):
  File "lightcompute.py", line 9, in <module>
ImportError: No module named compute

我知道是什么意思,就是我打包的这个py文件,里面import的另外一个文件它不能跟着打包,请问有什么好的解决方法吗

总的思路是这样,现在有A、B、C、D四个py文件
A import B、C、D
B import C、D
C import D
请问如何是好


#5


引用 2 楼 panghuhu250 的回复:
像是gui2exe或wx的一个bug. 试试这儿的建议, 改动一下gui2exe的代码.

http://*.com/questions/21444951/wxpython-3-0-breaks-older-apps-locale-error

其实, 你要用的py2exe, 你可以直接用它, 不一定要通过gui2exe来使用它.


你好,现在又有了新进展,我在setup.py(我用来打包的脚本)
里面import了我要打包的另外3个py文件,而且将setup.py与这四个py文件都放在同一目录,
打包完成后又出现了一个新问题
ImportError: matplotlib requires dateutil
我肯定有装dateutil这个模块的,不然我的原py文件肯定打不开
如何是好

#6


py2exe使用python的distutils工具, 不能自动检测到import的文件, 需要自己设置.

这儿是setup.py文件文档
https://docs.python.org/2/distutils/setupscript.html

网上应该也能找到一些中文的关于setup.py教程.

#7


引用 6 楼 panghuhu250 的回复:
py2exe使用python的distutils工具, 不能自动检测到import的文件, 需要自己设置.

这儿是setup.py文件文档
https://docs.python.org/2/distutils/setupscript.html

网上应该也能找到一些中文的关于setup.py教程.

好的谢谢

#8


引用 7 楼 f08865 的回复:
Quote: 引用 6 楼 panghuhu250 的回复:

py2exe使用python的distutils工具, 不能自动检测到import的文件, 需要自己设置.

这儿是setup.py文件文档
https://docs.python.org/2/distutils/setupscript.html

网上应该也能找到一些中文的关于setup.py教程.

好的谢谢

英语差,看不懂。。

#9


引用 6 楼 panghuhu250 的回复:
py2exe使用python的distutils工具, 不能自动检测到import的文件, 需要自己设置.

这儿是setup.py文件文档
https://docs.python.org/2/distutils/setupscript.html

网上应该也能找到一些中文的关于setup.py教程.



最后来更新一次吧,在我的setup.py文件里面添加了
import  matplotlib和import  dateutil
然后问题暂时解决,然后去看了看出错文档
出现Could not find the matplotlib data files
接着再谷歌,在文档发现
# Save matplotlib-data to mpl-data ( It is located in the matplotlib\mpl-data
# folder and the compiled programs will look for it in \mpl-data
# note: using matplotlib.get_mpldata_info
data_files = [(r'mpl-data', glob.glob(r'C:\Python25\Lib\site-packages\matplotlib\mpl-data\*.*')),
                    # Because matplotlibrc does not have an extension, glob does not find it (at least I think that's why)
                    # So add it manually here:
                 (r'mpl-data', [r'C:\Python25\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']),
                (r'mpl-data\images',glob.glob(r'C:\Python25\Lib\site-packages\matplotlib\mpl-data\images\*.*')),
                 (r'mpl-data\fonts',glob.glob(r'C:\Python25\Lib\site-packages\matplotlib\mpl-data\fonts\*.*'))]

# for console program use 'console = [{"script" : "scriptname.py"}]
setup(windows=[{"script" : "scriptname.py"}], options=opts,   data_files=data_files)

好的那就建立咯,最后,还是出现了错误
WindowsError: [Error 3] 系統: u'C:\\Python27\\dist\\mpl-data\\stylelib\\*.*'
至此,谷歌也帮不了我。
最后感谢这位大神的帮助,现在转战pyinstaller
谢谢

#10


后来呢?就这样了吗?

#11


哈哈~
在data_files中把stylelib目录加上就OK啦!
接下来,遇到都是module引入问题,sys.path增加路径,一一引入即可!

i am hualingson, no thanks!