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

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

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

 import sys

 from cx_Freeze import setup, Executable

 base = None
if sys.platform == 'win32':
base = 'Win32GUI' options = {
'build_exe': {
'includes': ['atexit'],
'excludes': ['Tkinter',
'collections.sys',
'collections._weakref']
}
} setup(
name="程序名",
version="版本号",
description="",
options=options,
executables=[Executable("主程序绝对路径", base=base,
icon="图标绝对路径")])

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

 import sys

 from cx_Freeze import setup, Executable

 base = None
if sys.platform == 'win32':
base = 'Win32GUI' options = {
'build_exe': {
'includes': ['atexit',
'numpy'],
'excludes': ['Tkinter',
'collections.sys',
'collections._weakref']
}
} setup(
name="程序名",
version="版本号",
description="",
options=options,
executables=[Executable("主程序绝对路径", base=base,
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修改如下:

 import sys
import numpy # 一定要有,否则会出现_ufuncs错误 from cx_Freeze import setup, Executable base = None
if sys.platform == 'win32':
base = 'Win32GUI' options = {
'build_exe': {
'packages': ['scipy'], # 重要
'includes': ['atexit',
'numpy',
'scipy'],
'excludes': ['Tkinter',
'collections.sys',
'collections._weakref']
}
} setup(
name="程序名",
version="版本号",
description="",
options=options,
executables=[Executable("主程序绝对路径", base=base,
icon="图标绝对路径")])

基于cx_freeze编译PyQt4程序(numpy & scipy)的更多相关文章

  1. [python] 安装numpy+scipy+matlotlib+scikit-learn及问题解决

    这篇文章主要讲述Python如何安装Numpy.Scipy.Matlotlib.Scikit-learn等库的过程及遇到的问题解决方法.最近安装这个真是一把泪啊,各种不兼容问题和报错,希望文章对你有所 ...

  2. numpy+scipy+matlotlib+scikit-learn的安装及问题解决

    NumPy(Numeric Python)系统是Python的一种开源的数值计算扩展,一个用python实现的科学计算包.它提供了许多高级的数值编程工具,如:矩阵数据类型.矢量处理,以及精密的运算库. ...

  3. windows下安装python numpy+scipy+matlotlib+scikit-learn等流行库

    (1)请不要直接使用   pip install scikit-learn pip install Numpy pip install Scipy pip install Matplotlib 命令安 ...

  4. matplotlib numpy scipy 的安装

    一:windows 端的安装 #cmd指令 python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sym ...

  5. 基于DevExpress的Winform程序安装包的制作

    在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装.安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件 ...

  6. windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等

    安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...

  7. linux python 安装 nose lapack atlas numpy scipy

    linux python 安装 nose lapack atlas numpy scipy --http://lib.csdn.net/article/python/1262 作者:maple1149 ...

  8. ok6410[002] ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境

    ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境 系统:  ubuntu16.04 裸板: 飞凌公司OK6410开发板 目标:搭建基于ubuntu1604系统和基于RA ...

  9. 如何在VS2010的VC++ 基于对话框的MFC程序中添加菜单

    方法1:亲测 成功  转载自https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/48338f6b-e5d9-4c0c-8b17-05ca3ef ...

随机推荐

  1. Centroid - SGU 134(树的搜索)

    题目大意:给你一个树,树每个点都有一个值, 这个点的的值就等于所有儿子里面点最多的那个儿子,值最小的就叫做重心,求出重心,还有所有等于重心的点,按照升序输出. 分析:就是一个简单的搜索树,求出来最大的 ...

  2. c\c++复习基础要点16----枚举类型

    枚举类型: 语法格式: enum 枚举类型名 {变量值列表}; 例如: enum  Weekday{sun, mon, tue, wed, thu, fri, set}; 声明了枚举类型后,就可以定义 ...

  3. 三分钟读懂Oracle数据库容灾架之DataGuard

    Oracle数据库目前依然处于商用数据库的霸主地位. 运行在Oracle数据库上的核心业务及核心数据的安全性尤为重要. 目前市场上针对Oracle数据库常见的容灾产品大致可以分为两大类. Oracle ...

  4. Eclipse Code Template 设置自动加注释(转)

    Eclipse Code Template 设置自动加注释 设置注释模板的入口: Window->Preference->Java->Code Style->Code Temp ...

  5. winform DataGridView双击修改单元格的值 分类: DataGridView 2014-08-04 19:39 150人阅读 评论(0) 收藏

    定义全局变量 string abcmycode = "";//当前行自编号 bool tf = false;//是否双击 //双击可编辑         private void ...

  6. Secant Method (Website)

    Secant Method:  https://www.youtube.com/watch?v=qC9xnsfOd30 Secant Method : http://mathworld.wolfram ...

  7. 关于开发环境 git 重新部署

    apps  开发机器 多次因为升级出现无法登陆 下面就重新部署 流程做笔记 1   备份 根目录下的 那一堆shell 和 Cache/data 下的系统配置 2  shell : su www   ...

  8. js数组操作的常用方法

    数组:arr=[1,2,3,4,5]; 1.数组转换成字符串,不会修改原数组内容: arr.join(); // "1,2,3,4,5" arr.join("" ...

  9. U3D Trigger事件触发

    使用Trigger事件触发,可以达到虽然触发了,可是不改变任何效果. 这个是进入时候触发的: void OnTriggerEnter2D(Collider2D other) { print (othe ...

  10. 层叠样式优先级CSS

    按照W3School网站(点这里直达)的说法,当同一个 HTML 元素被不止一个样式定义时,它们是有优先级之分的,如下,将优先级从小到大排列出来,其中4的优先级最高: 1.浏览器缺省设置2.外部样式表 ...