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

当开发完成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="图标绝对路径")])
时间: 2024-10-12 17:23:18

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

在Python3.4下,用cx_freeze打包PyQt4程序

受到love小树林的启发,圆满完成了打包.操作过程如下: 1.下载cx_freeze 这里是下载的地址 从该网页上找到cx_Freeze?4.3.4?cp34?none?win32.whl,点击下载 2.修改下载文件的扩展名 把扩展名whl,改为zip 3.把该文件解压缩 取出其中的3个子目录 4.删除cx_freeze的旧包 把Python 3.4 安装目录下,Lib\site-packages 里与 cx_Freeze 相关的子目录删除 5.放置cx_freeze的新包 在 Lib\site

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

NumPy(Numeric Python)系统是Python的一种开源的数值计算扩展,一个用python实现的科学计算包.它提供了许多高级的数值编程工具,如:矩阵数据类型.矢量处理,以及精密的运算库.专为进行严格的数字处理而产生.内容包括:①一个强大的N维数组对象Array:②比较成熟的(广播)函数库:③用于整合C/C++和Fortran代码的工具包:④实用的线性代数.傅里叶变换和随机数生成函数.numpy和稀疏矩阵运算包scipy配合使用更加方便. SciPy (Scientific Libr

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

在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装.安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件导致系统运行出错.本文主要介绍基于DevExpress的Winform程序安装包的制作内容,包括VS2010和VS2013/V2105的不同处理方式. 我们知道,VS2010是最后一个可以使用微软安装包制作工具的VS版本了,所以后面VS2012/2013/2015版本都需要使用第三方安装包制作工具,

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

ubuntu1604系统下搭配ckermit和dnw基于RAM的裸机程序调试环境 系统:  ubuntu16.04 裸板: 飞凌公司OK6410开发板 目标:搭建基于ubuntu1604系统和基于RAM的裸机程序开发环境 1.安装配置ckermit 在ubuntu1604下一般做裸板开发时都是使用ckermit作为远程通讯终端,下面我们就开始讲解下其安装与配置. 1.1.安装ckermit 在ubuntu系统下安装ckermit,使用 sudo  apt-get  install  ckermi

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

背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器学习模块,包括分类.回归.聚类系列算法,主要算法有SVM.逻辑回归.朴素贝叶斯.Kmeans.DBSCAN等,目前由INRI 资助,偶尔Google也资助一点. SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科学与工程中常用的计算.其功能与软件MA

Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法

原文:Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我们讲了Raspberry安装Win10 IoT系统及搭建Visual Studio 2015开发环境的方法(http://www.cnblogs.com/cloudtech/p/5562120.html)

如何用命令行编译c++程序

作为程序员,如果仅仅只懂得如何在IDE上拖控件写程序,而不知道如何直接通过编译器编译程序的话.虽然说也没啥大不了的,但是如果掌握了手动编译的技能,那肯定会是一种炫技般的存在.从客观的角度来讲,一方面,这种技能帮你在同事或同学面前体现在自己的编程方面的“骨灰级”地位.另一方面,这种脱离了IDE的编译过程在你刷题的时候能帮你摆脱很多IDE上的恼人事故. 实际上,网上一找,确实有不少这个方面的文章,不过好多都是基于32位的win7或者win8的系统的,很不巧的是,本人的电脑是64位的win10系统.在

linux python 安装 nose lapack atlas numpy scipy

linux python 安装 nose lapack atlas numpy scipy --http://lib.csdn.net/article/python/1262 作者:maple1149 The first step of machine larning . 环境配置: OS:ubuntu 10.04 Python :Python 2.6.5 1.安装nose 这个安装还比较顺利,基本没报错... 下载nose: https://nose.readthedocs.org/en/la

【Python地理数据处理】一、环境的搭建和准备(numpy,scipy,matplotlib)

本文主要总结<Python地理数据处理>一书中使用到的库及安装方法.在http://www.lfd.uci.edu/~gohlke/pythonlibs/可以下载到对应于python版本的各种库文件. 一.python 使用的为目前的最新版本3.6.2. 二.安装numpy,scipy,matplotlib,基于python3.6 (1)在上述网址中分别找到numpy,scipy,matplotlib进行下载.注意:win版本(32/64),python版本一定要匹配 例如:scipy?0.1