python程序打包问题总结
2018-02-09 04:34
281 查看
python程序打包
前言
平时自已会写一些python程序,在淘宝上挂了一个youtube视频下载的程序,真的有人在买,把打包的程序发送给用户时发现了一些问题。这里总结一下。大家可以在我的淘宝店看到我出售的那个程序:
https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.59a21deb92Wawz&id=562803654585
商品在淘宝违规已被下架删除,这里没有办法浏览了,大家可以去我的商店看看别的出售商品
https://fengmm521.taobao.com
一开始只是打算写一个命令行下的视频下载工具,出售给会用命令行的兄弟们,但实际过程中的几个买家都是一点程序不会写的用户。于是用了一个通宵时间给我的命令行工具写了一个wx的界面,总的来说,现在这个程序还像点样子。
在用户使用过程中,因为部分用户访问外网的工具不理想,网络环境会不稳定,如果视频下载到一半时断网了,再连上来我这个程序就假死了,又花了一天时间把断网后网络恢复时,程序会接着之前下载一半的地方接着下载的功能加上去,同时还加了一个当前已下载的文件大小显示加上去。现在程序基本稳定了,除了没有下载剩余还有多少没有提示外,界面丑点,基本上在功能上没有什么问题了。但最近这两天有部分用户是mac系统用户,mac系统的安全性作的比较好,我的程序运行时会报一些权限错误。下边是gui程序打包过程中遇到的坑。希望对后来人有帮助。
MAC系统
最开始,mac系统下使用的是pyinstaller打包的app.在自已开发用的电脑上运行是完全没有问题的。但在用户的电脑上会出现程序没有写文件的权限。第一个用户远程在用电脑上安装了brew,pip,ffmpeg和我使用的一些其他库之后,用户的程序才正常工作。用pyinstaller来打包app,这个工具打包的app还是比较好用的,安装方法
pip install pyinstaller --user
使用方法
pyinstaller -w testproject.py #-w参数是生成app #-F是生成一个单一的可执行文件
不知道是不是因为使用的是pyinstaller打包的app原因,所以今天晚上就试了一下py2app这个打包工具。
网上找了一个教程看了一下:
https://www.jianshu.com/p/afb6b2b97ce9
使用py2app过程中遇到了两个问题,
1.py2applet命令不存在
这个工具是用来生成py2app的setup.py文件,其实这个工具是在/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/bin/py2applet
可以有两种方法设置这个工具,一种是使用ln -s的软链接到用户的/usr/local/bin目录下,还有一种是给工具所在的这个bin目录设置到环境变里。我用的是设置环境变量的方法,因为这个目录下还有几个工具,怕以后别的地方会用到
2.Operation not permitted错误
用py2applet --make-setup test.py
生成了setup.py文件后,再使用
python setup.py py2app
命令行程序打包时,发现出了一个Operation not permitted错误。网上找了很多资料,说是苹果系统OS X EI Capitan (10.11.2)版本之后增加了系统文件完整性功能SIP。
网上看了有三种处理方法,
1.使用brew install python安装一个新的python2
使用brew install python后会安装一个python2到/usr/local/bin/python2
的软链接程序,实际的安装位置在
/usr/local/Cellar/python/2.7.14_3/Frameworks/Python.framework/Versions/2.7/bin/python2.7
感现在苹果的python实际上是有三个版本,
一个是mac系统自然的一个,目前的版本是2.7.10
第二个是mac系统下安装的,python3,我的这个python3应该是我自已安装的
第三个是刚刚用brew安装的python2
这三个python在使用过程中其实不会冲突,用mac自代的2.7.10就用python,用咱刚刚安装的2.1.14用在命令行中用python2,如果要用到一些不支持python2的,可以在命令行里使用python3
2.使用上边py2app例子中的virtualenv环境
使用这个环境比较麻烦,几乎要重新安装所有的pip安装的第三方库,因为virtualenv的环境是一个独立的python环境。virtualenv的用法:
#创建项目目录 mkdir projectdir #进入项目目录 cd projectdir #生成virtualenv环境 virtualenv venv #开始使用这个环境 . venv/bin/activate
停止使用venv环境时,输入deactivate就可以了
使用这个方法,如果你是开发大型项目,而且这个项目要开发很久,这个方法不错,如果只是自已一个人开发的小项目,用venv的话,所有的python第三方库都要用pip在venv里重安装一遍,会非常烦人
3.手动关闭mac系统的SIP
这个方法可能会对系统的稳定性造成不好的结果。苹果之所以加了SIP自然有加这个功能的道理,这个方法我不推荐使用,所在这里就不提了,想了解的话可以在网上找找看我使用的ffmpeg这个库对下载的视频作音视频合成,而ffmpeg在使用brew安装后会用到三个第三方库。这要在打包好python的app后手动放到app里,没有研究怎么在setup.py中加上第三方库的方法,有人了解的话可以给我留言
Windows下打包python
windwos下用pyinstaller也是可以打包的,但打包的程序无法在win10上运行,目前不知道win7或者别的windows系统能不能运行所以我在windows上用的打包工具是py2exe
这个工功也要用到setup.py文件
py2exe的使用方法:
可参考下边的文章
http://www.ttfde.org/archives/293.html
使用py2exe打包windows上的程序到没有多大问题。在win10和win7上都可以使用。只是在程序运行时会自动打开一个命令行窗口,别的都没有问题,而且python中的多线程和mac系统在语言上也没有区别
相关文章推荐
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks程序(Python)配置问题总结
- Maven_Python打包遇到的问题总结
- Python调用不在同一个文件夹下的Python程序,并且如何解决pyinstaller打包路径问题
- pyinstaller打包python程序时VideoCapture()不响应问题的处理
- pyinstaller 打包Python程序(APScheduler,mysql)遇到的问题
- python3.4 使用pyinstaller打包程序遇到的问题
- pyinstaller 打包pyqt程序时出现的问题 python3.5 win7 64bit环境
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks程序(Python)配置问题总结
- python程序打包loggingconf问题
- Python中异步程序编写时候多次循坏问题总结
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks程序(Python)配置问题总结
- Linux下Qt程序的打包发布和问题总结
- [转载]VB.net程序的打包问题示例!
- m文件转换为C/C++文件的编译、绘图、参数、打包问题总结
- 自己总结的python和wxPython中文问题
- vs2008打包程序需要.net3.5支持问题的解决方案
- Symbian OS 打包文件(.pkg)详解及问题总结
- vs2008打包程序需要.net3.5支持问题的解决方案
- Python使用SOAPpy调用.net写的WebService的乱码问题总结
- 出差总结2:程序效率问题