Python打包程序小记
pyinstaller -D app.py 多文件
pyinstaller -F app.py 单文件
自定义打包的可执行文件名
pyinstaller -F app.py -n 哔哩哔哩
两个可能遇到的问题:
1.路径问题
在打包成单文件的时候,如果此文件需要读取其他的文本数据等,他会默认去解压后的临时目录去找。从而发生错误。应该使用如下的方式去寻找文件(当然,对应的文本数据应该放在对应的目录下)
BASE_DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
PyInstaller 在运行时会将一些资源文件解压到临时目录,但可执行文件本身不会被放在临时目录中运行。临时目录主要用于存放那些被打包进可执行文件的资源文件和依赖库。
2.导入模块问题
普通的依赖模块会正常打包进文件中,哪怕是各种来回嵌套调用的依赖。但是如果是遇到使用花活,什么“动态导入模块”的功能,就会出现问题。如下所示:
import importlib
card = importlib.import_module(“utils.card”)
v1 = card.get_number
这种情况,就不行了。
解决办法:
在对应的app.spec中,在hiddenimports中加入路径即可。
另外,打包的时候也要如下示例进行打包。
pyinstaller -F app.spec