1.生成setup.py文件
生成的默认setup.py内容如下:
2.打包
执行后会生成一个build和dist文件夹,dist下的main.app就是生成的可执行程序,双击即可运行。
但实际上,稍稍复杂一点的工程庆毁按照默认的setup.py打包,执行的时候都是会出错的。
原本的设想是会把工程包按原本的目录结构全部打包,但实际上需要用到的图片,音源,文本等等,在执行的时候都会报错找不到,因为都是要手动配置到setup.py里才能被打包。
如果不知道自己的APP为什么会报错,可用以下命令执行APP,就可以看到报错信息:
所以需要修改setup.py如下:
具体的参数解释: 官方文档
icns的生成参考: 【MAC】生成MAC APP图标icns
================================
追加一个打包后运行时遇到的一个让我解决了很久的问题。
报错信息如下:
查了很多信息,应该是动态链接库的问题,当你的依赖库里又去引用另一个库的时候,会出现这种找不到的情况。但是网上的解决办好判法我都没有试成功,尤其我要保证我的APP去了任何一台机器都可以直接运行。所以最后尝试了最傻的办法。就是直接把这个找不到的库誉袜备打包进我的APP,虽然这个libffi.8.dylib应该是一个shared lib.
所以修改setup.py文件里追加如下设置:
重新打包后,libffi.8.dylib就会自动出现在Frameworks下面,本机双机运行正常,直接传到其它机器运行也正常了。
1、下载并安装py2exe,可下载最新版本。2、编写安装脚本,比较简单,不过多解释,如下:
Screenshot_setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from distutils.core import setup
import py2exe
includes = ["encodings", "encodings.*"]
data_files = ['CameraDll.dll']
options = {"py2exe"陪销肆:
{ "compressed": 1,
"optimize": 2,
"bundle_files": 1,
"includes": includes
}
}
setup(
version = "1.0",
description = "Screenshot Tool",
name = "Screenshot Tool",
options = options,
zipfile=None,
data_files = data_files,
console=[{"script": "Screenshot.py", "icon_resources": [(1, "Screenshot.ico")] }]
)
各参数含义见第5小节或执行python命令行下执行help(py2exe)查看。
3、打包程序:斗渗
a、将要找包的程序、文件和打包脚本放在同一目录下,如下:
E:\tmp\pyexe_tmp>tree /F
文件夹 PATH 列表
卷序列号码为 0007F240 101F:F68D
E:.
CameraDll.dll
screenshot.ico
Screenshot.py
screenshot_setup.py
没有子文件夹
E:\tmp\pyexe_tmp>
b、执行打包脚本:
E:\tmp\pyexe_tmp>python screenshot_setup.py py2exe
python screenshot_setup.py py2exe
running py2exe
creating E:\tmp\pyexe_tmp\build
creating E:\tmp\pyexe_tmp\build\bdist.win32
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\collect-2.6
creating E:\tmp\芦轿pyexe_tmp\build\bdist.win32\winexe\bundle-2.6
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\temp
creating E:\tmp\pyexe_tmp\dist
*** searching for required modules ***
*** parsing results ***
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
writing byte-compilation script 'e:\tmp\tmp1ecbcw.py'
编写的程序必须要有GUI(图形用户界面),老困否则程序是不会有显示的。具体流程
1. 下载py2app
在此推荐使用Pycharm,下载第三方库时很方便。具体为File >Default Settings >Prroject Interpreter >“+” 搜索所需的包即可。猛旦若使用其他IDE,可通过终端输入
pip install py2app
或
easy_install py2app
注:pip的安装路径要和interpreter的路径保持一致,此处可能出现版本不一致的情况
2. 创建setup.py文件
cd /Users/apple/Desktop/function
py2applet --make-setup function.py
在此后,会显示
Wrote setup.py
但如显示
-bash: py2applet: command not found
说明未找到py2app中py2applet的位置,需手动输入,执行以下命令(重新进入终端,否则路径还在工作区)
sudo find / -name "py2applet" -type f
一般会搜索一段时间,在本人机器上地址为
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/bin/py2applet
这样的话,最初的命令变为
cd "工程路径"
"py2applet地址" --make-setup "python文件名"
不出意外的话,会显示
Wrote setup.py
说明setup文件已建立,其中具体内容会在以后提到。
3. 发布应用
接上一步,输入
rm -rf build dist
python setup.py py2app
一个简单的小程序侍知念就完成了,”.app”文件会在工程文件目录下的dist文件夹中。
下为demo中命令行中所有命令
Apples-MacBook-Pro:~ apple$ cd /Users/apple/Desktop/helloworld
Apples-MacBook-Pro:helloworld apple$ /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/bin/py2applet --make-setup helloworld.py
Wrote setup.py
Apples-MacBook-Pro:helloworld apple$ rm -rf build dist
Apples-MacBook-Pro:helloworld apple$ python setup.py py2app
running py2app
.........
.........
Done!
Apples-MacBook-Pro:helloworld apple$
到此为止,已完成小程序的发布。
4. 代码及结果
import Tkinter as tk
root = tk.Tk()
root.title("hello")
tk.Button(root, text="Helloworld!").pack()
tk.mainloop()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)