用jupter编写python程序封装EXE文件的遇到的问题处理方法
1、遇到的问题
2、问题分析
3、正确的处理方法
1、遇到的问题 正常封装exe文件,打开交互窗口一闪,没反应 看不到错误提示,移植到其他的windows电脑中运行不了
2、问题分析 发现这种问题,你需要确认的几个问题: a、你的.ipynb文件的工作路径在哪里 b、你的程序中是否有第三方导入包 c、你的程序运行中是否有协同文件 d、你的程序要移植到的使用环境是什么平台
3、正确的处理方法 这个四个问题,会直接导致封装运行不了,下面针对这四种情况给大家说一下个人的处理方法。 a、你的.ipynb文件的工作路径在哪里 一般的情况下我们都会知道在哪里,如果不知道的话,有两种方法来确定:在jupyter中程序界面,另起一个cell输入 import os print(os.getcwd()) out:D:\deeplearncv\qmhbishai 另一种:就是在电脑中找到工作文件夹的位置 好了,第一个坑就发生在这里。 正常封装会在上面确定的工作路径下,地址栏输入CMD 当然你如果能在CMD找到工作路径下也可以: 输入: pyinstaller -F mubiao.py 封装后,运行。失败 b、你的程序中是否有第三方导入包 这里要明白一个的是: anaconda是具备环境管理的功能的。 每个环境中安装的,环境三方包是不一样。我要封装程序是在roboep中,那么你如果在工作路径下输入cmd,和在anaconda对应环境下的open terminal中查看安装的包,你就会发现pip list 前者的安装包中,是没有我程序中要用到的easygui.py包 第二个坑就出现了:常规做法在工作路径下封装,是不会封装到我们要用的库的 其实在:封装过程中的提示代码也有体现。 c、你的程序运行中是否有协同文件 程序的协同文件:我用到GUI封面的图片,exe程序图标,数据导入和输入CSV文件。 第三个坑出现了:这些文件要以相对文件路径来编写,因为移植到的电脑的文件地址,用绝对路径找不到 另外:pyinstaller封装后dist文件中的exe文件要和协同文件一起放到一个文件夹中进行打包,并且也要把这些文件和exe程序一起发给用户,才可以使用 d、你的程序要移植到的使用环境是什么平台 要清楚,我现在的理解,在windows平台封装的exe文件只能在windows平台电脑进行使用,不能在linux 和os x平台使用。 另外,电脑要支持X64,通常都支持,但是这个程序是给,初中生上学用的,有的学校的电脑是32为系统。 第四个坑:考虑好32 64位系统的兼容性 总结一下:处理方法: 在jupyter编写完程序,在anaconda 相对应的环境下,在open Terminal通过环境下的cmd,定位工作路径位置,运行pyinstaller -F mubiao.py进行封装 相关注意点如下: #更改绝对路径为相对路径,为封装成EXE文件做准备 #获取当前工作路径的方式import os os.getcwd() #更改当前工作路径的方法 os.chdir(path) #绝对路径在windows下以CDF盘符开始,os和linux以/为开始 #相对路径建立在当前工作目录下,以.\为开头,表示当前目录 #相对路径中…\是表示,工作目录盘符下非工作目录。 #打包pyinstaller -F -w -i[].ico [脚本名].py i打包图标 #F仅仅生成一个文件,不暴露其他信息,启动比较慢,-D生成文件夹,多文件格式,启动快 #W窗口模式,不现实控制台 -c股票路径,做应用icon #将生成dist文件夹中的exe文件和资源封装成一个文件夹,打包发送客户执行
|