python源文件转换成exe问题解决贴
项目上做一个小工具,通过webservice接口实现配置下发。python文件调试通过了,想把它抓换成exe,网上查了下,得知有py2exe这个好用精简的小工具,本以为分分钟搞定的事情,结果经历了九转十八弯。在此把遇到的坑和填坑的手段一一记录一下,希望不要忘记。
py2exe官网上提供了一个特别精简的例子,setup.py中仅那么几行代码:
from distutils.core import setup
import py2exe
setup(console=["helloworld.py"])
其中helloworld.py是待转换的python文件。实际上setup的函数选项远不止一个console,且这种最精简的写法无法满足更高级的需要,例如有第三方库,例如py文件中图片甚至音频文件链接等等。更多的应用要去查官方文档,这里本人唯一要使用到的是第三方库。
网上查找的参考代码如下:
# coding=utf8 from distutils.core import setup
import py2exe extra_modules = ["bs4"] options = {"py2exe":
{"compressed": 1,
"optimize": 2,
"bundle_files": 1, # 表示把所有文件打包进exe可执行程序
"packages": extra_modules,
#"includes": extra_modules
}
}
setup(
version = "1.0.0",
description = "test for py2exe",
name = "Py2exeTest",
options = options,
zipfile = None,
console = [{"script": "app_main.py"}]
)
其中几个重要的参数:
console = [{"script": "app_main.py"}] 表示这是个控制台程序,希望把app_main.py打包成exe程序。这里把app_main.py换成自己的python脚本名即可
zipfile = None 默认py2exe会生成一个library.zip的库文件;此处为None,则不生成改文件,把它打包到exe文件。对于该选项,本人尝试编却一直编不过,报configParser的错误,网上也没找到解决办法,最后看到有人说打包编可能存在失败概率,反正也不要求这个,就把打包的相关选项都去掉了。一试编过了。
"packages": extra_modules 指定依赖的其它模块。在我使用过程中,实际上packages和includes选项都需要,缺一个就报configParser错误,此处我用到的suds和paramiko,因此extra_modules写了两个库
"bundle_files": 1 表示要把所有文件打包成一个 exe可执行程序
几经波折后,setup,py文件代码如下:
# coding=utf8 from distutils.core import setup
import py2exe extra_modules = ["suds","paramiko"] options = {"py2exe":
{
"packages": extra_modules,
"includes": extra_modules
}
}
setup(
version = "1.0.0",
description = "test for py2exe",
name = "Py2exeTest",
options = options,
console = [{"script": "test.py"}]
)
以为到这就完了,编的时候还是报了各种错,其中最主要的是找不到库的错,如
"no module named paramiko"
"no module named ecdsa"
吧啦吧啦
又是去求助万能的互联网,网上说py2exe不支持egg模块的包,解决办法是把报错的库的包(Python安装路径,一般是c:\python27\lib\site-packages)的egg文件中,同名的文件夹解压出来,放入python库中(c:\python27\lib\site-packages)。有些拗口,就这么个意思,最后问题解决,在dist下出现了想要的exe文件,执行正常。
python源文件转换成exe问题解决贴的更多相关文章
- 使用py2exe将python脚本转换成exe可执行文件
Python(wiki en chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象.命令式.函数式和过程式编程. 由于Python拥有一个巨大而广泛的标准库 ...
- pyinstaller使用-python项目转换成exe可执行文件
http://blog.csdn.net/pipisorry/article/details/50620122 Python不是每个人的计算机里面都有安装,当您写了一个好用的工具,需要一个standa ...
- 如何将python源文件打包成exe文件
PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Python 程序可以在没有安装 Py ...
- 将python源文件打包成exe文件
pyinstaller 库的使用PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux.Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包,Pyt ...
- 用py2exe将python文件转换成exe可执行程序
1.首先需要安装py2exe模块,下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 然后用pip install 命令安装py2exe模块,如果你用的py ...
- 将python脚本转换成exe文件--pyinstaller
遇到的大坑: 直接运行python文件效果: 执行 pyinstaller -F -w -p -i ./123.ico ./main.py 在dict文件夹下生成exe文 ...
- 小白学习Python之路---py文件转换成exe可执行文件
一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的 ...
- 使用py2exe将python程序打包成exe程序
近日帮朋友写了个python小程序,从互联网上抓取一些需要的文章到本地.为了运行方便,希望能转换成exe程序在windows下定期执行.从百度上找了些文章,发现py2exe的应用比较多,遂使用之. 1 ...
- 使用pyInstaller发布PathMerge的exe版本(py转换成exe)
前言 PathMerge是用python写的一个辅助文件夹合并的小工具,它的特点是不用担心合并后文件会丢失,旧文件会创建副本保存下来,除非你手动删除. 详情见:python开发目录合并小工具 Path ...
随机推荐
- Linux 源码编译Python 3.6
Linux 源码编译Python 3.6 1.操作系统以及版本显示 # uname -sr Linux 3.10.0-514.el7.x86_64 # uname -sr Linux 3.10.0-5 ...
- shell 组合新的变量名
shell 组合新的变量名 普通变量 name=yushuang var=name # 要获取到yushuang res=`eval echo '$'"$var"` echo $r ...
- java多线程开发容易犯的错误
昨天在社区上看到有人讨论多线程使用,多线程遇到一些问题以及一些使用技巧记录一下.为什么要使用多线程, 不能是为了用而用,和设计模式一样用的合理,会让程序更易于理解,用的不合理反而会让程序变得更难理解. ...
- Can you solve this equation?
Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- Codeforces 376C. Socks
C. Socks time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...
- selenium-iframe操作
iframe,又叫浮动帧标记,是内嵌的网页元素,可以将一个html文件嵌入到另一个html文件中显示. 最典型的案例就是163邮箱登录:http://mail.163.com/,被绿色覆盖的部分即为i ...
- 表空间与数据文件Offline,online的区别
首先明确,表空间与数据文件的关系:Oracle数据库表空间有两种,一种smallfile小文件表空间(默认),另一种bigfile大文件表空间: 默认表空间与数据文件的关系:允许一对多的处理方式,一个 ...
- JS中!=、==、!==、===的用法和区别
1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较"转化成同一类型后的值"看"值"是否相等,===如果类型不同 ...
- JDBC数据源 使用JNDI连接池实现数据库的连接
0.引言 许多Web应用程序需要通过JDBC驱动程序访问数据库,以支持该应用程序所需的功能.Java EE平台规范要求Java EE应用程序服务器为此目的提供一个DataSource实现(即,用于JD ...
- ES6中class关键字
1 .介绍 //定义类 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + th ...