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 ...
随机推荐
- python抽象篇:面向对象
1.面向对象概述 面向过程编程:根据操作数据的函数或语句块来设计程序的. 函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象编程:数据和功能结合起来,用称为对象的东西包 ...
- D - MUH and Cube Walls
D. MUH and Cube Walls Polar bears Menshykov and Uslada from the zoo of St. Petersburg and elephant ...
- 使用Lock锁生产者消费者模式
package com.java.concurrent; import java.util.concurrent.locks.Condition; import java.util.concurren ...
- Flex布局语法
flexbox 弹性盒布局和布局原理 新版的flexbox规范分两部分:一部分是container,一部分是 items. flexbox是一整套布局规范,包含了多个css属性,所以学习起来比`flo ...
- Python文件夹备份
Python文件夹备份 import os,shutil def file_copy(path1,path2): f2 = [filename1 for filename1 in os.listdir ...
- 在.csproj文件中增加npm, bower, gulp, webpack的构建
<Target Name="RunNpm" AfterTargets="AfterBuild"> <!-- As part of publ ...
- Scrum Meeting Alpha - 8
Scrum Meeting Alpha - 8 NewTeam 2017/11/2 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了登录API的测试和包装Pull Requ ...
- 前端html 中jQuery实现对文本的搜索并把搜索相关内容显示出来
做项目的时候有这么一个需求,客户信息显示出来后我要搜索查找相关的客户,并把相关的客户信息全部显示出来,因为一个客户全部信息我写在一个div里面 所以显示的时候就是显示整个div.先看看实现的效果: ...
- PLSQL锁表之后改如何操作
(1)查看哪个表被锁select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects ...
- 掌握numpy(一)
NumPy是一款用于科学计算的python包,强大之处在于矩阵的运算以及包含丰富的线性代数运算的支持.本文将对numpy一些常用的用法进行讲解,一来是对自己的知识进行梳理,二来作为一份备忘录供以后查阅 ...