背景
最近公司让把以前的项目优化下,优化完后将程序用pyinstaller打包成exe文件,双击运行时报错“ModuleNotFoundError:No module named ‘cx_Oracle‘”
排查
首先,想到是不是安装本机没有pip install cx_Oracle,导致包不能正常被导入,但是Python文件在pycharm中可以正常运行,所以应该是导入了的
那应该就是打包时没有将cx_Oracle打进exe文件中
为什么没有呢?
解决
苦思冥想,突然想到最近因为要做win7 32位的exe包,安装了Python 3.8 32位版本(以前用3.6),看看是不是使用的pyinstaller与pycharm 的python版本不一致? 果然是电脑安装多个Python版本导致的,更换了3.6版本的pyinstaller 打包可以正常运行了
拓展
在解决上面问题过程中,在cmd中使用python *.exe 发现报错:SyntaxError: Non-UTF-8 code starting with ‘\x90’ in file
这个问题同样困扰了好久,记录一下。
看了一个论坛,说是python打包的文件不能在terminal或者cmd终端,用python *.exe执行,因为python的脚本本事不支持utf-8格式? 后面再研究吧