码迷,mamicode.com
首页 > 其他好文 > 详细

基于cx_freeze编译PyQt4程序(numpy & scipy)

时间:2016-07-23 19:40:46      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

当开发完成PyQt4程序后,需要提供给他人使用,这时最好的办法是将Python程序编译成exe文件。

通常我采用cx_freeze完成这个工作,即编写setup.py文件,执行python setup.py build即可。

(1) 对于一般的PyQt4程序,setup.py内容如下:

 1 import sys
 2 
 3 from cx_Freeze import setup, Executable
 4 
 5 base = None
 6 if sys.platform == win32:
 7     base = Win32GUI
 8     
 9 options = {
10     build_exe: {
11             includes: [atexit],
12             excludes: [Tkinter,
13                          collections.sys,
14                          collections._weakref]
15     }
16 }
17 
18 setup(
19         name="程序名",
20         version="版本号",
21         description="",
22         options=options,
23         executables=[Executable("主程序绝对路径", base=base,
24                                 icon="图标绝对路径")])

(2) 当使用numpy后,则setup.py修改为:

 1 import sys
 2 
 3 from cx_Freeze import setup, Executable
 4 
 5 base = None
 6 if sys.platform == win32:
 7     base = Win32GUI
 8     
 9 options = {
10     build_exe: {
11             includes: [atexit,
12                          numpy],
13             excludes: [Tkinter,
14                          collections.sys,
15                          collections._weakref]
16     }
17 }
18 
19 setup(
20         name="程序名",
21         version="版本号",
22         description="",
23         options=options,
24         executables=[Executable("主程序绝对路径", base=base,
25                                 icon="图标绝对路径")])

(3) 当使用scipy后,利用cx_freeze编译时会出现Import Error: No module named ‘scipy‘。

这时需要将cx_Freeze文件夹下的hooks.py的第548行代码"finder.IncludePackage("scipy.lib")"改为"finder.IncludePackage("scipy._lib")"。

相应的setup.py修改如下:

 1 import sys
 2 import numpy # 一定要有,否则会出现_ufuncs错误
 3 
 4 from cx_Freeze import setup, Executable
 5 
 6 base = None
 7 if sys.platform == win32:
 8     base = Win32GUI
 9     
10 options = {
11     build_exe: {
12             packages: [scipy], # 重要
13             includes: [atexit,
14                          numpy,
15                          scipy],
16             excludes: [Tkinter,
17                          collections.sys,
18                          collections._weakref]
19     }
20 }
21 
22 setup(
23         name="程序名",
24         version="版本号",
25         description="",
26         options=options,
27         executables=[Executable("主程序绝对路径", base=base,
28                                 icon="图标绝对路径")])

 

基于cx_freeze编译PyQt4程序(numpy & scipy)

标签:

原文地址:http://www.cnblogs.com/wangzhehong1981/p/5699338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!