今天采用pyinstaller打包文件,打包语句是
pyinstaller --noconfirm --onedir --windowed --add-data "C:/Users/bxx/Desktop/asdf/proccesing/icons;icons/" "C:/Users/bxx/Desktop/asdf/proccesing/main.py"
打包后出现以下报错:
这就很让人难受了,打包前直接运行就没有问题,打包后就不行了。
我查看了一下,路径下确实有这个包。
一顿百度之后找到了这个博客
https://blog.csdn.net/python_new/article/details/80396094
好吧,那它找不到,就直接给他用“–hidden-import”加进去吧,就是这样
pyinstaller --noconfirm --onedir --windowed --add-data "C:/Users/bxx/Desktop/asdf/proccesing/icons;icons/" --hidden-import fabio.HipiCimage "C:/Users/bxx/Desktop/asdf/proccesing/main.py"
但是问题又来了,虽然这个包找到了,打包后发现缺fabio包下的另一个文件。。。在尝试添打包了五次之后,我怀疑这整个包下的所有文件都找不到,头疼。。。
于是我写了如下函数,把这个包里的所有py文件都拼成了–hidden-import字符串
import os
import re
filePath = 'E:\\work\\mamba\\venv\\Lib\\site-packages\\fabio\\'
a=os.listdir(filePath)
b=""
for file in a:
if re.match('.+\.py$',file):
file="--hidden-import fabio." + file[:-3]
b= b+" "+file
print(b)
得到结果:
--hidden-import fabio.adscimage --hidden-import fabio.binaryimage --hidden-import fabio.bruker100image --hidden-import fabio.brukerimage --hidden-import fabio.cbfimage --hidden-import fabio.converters --hidden-import fabio.datIO --hidden-import fabio.directories --hidden-import fabio.dm3image --hidden-import fabio.dtrekimage --hidden-import fabio.edfimage --hidden-import fabio.eigerimage --hidden-import fabio.esperantoimage --hidden-import fabio.fabioformats --hidden-import fabio.fabioimage --hidden-import fabio.fabioutils --hidden-import fabio.file_series --hidden-import fabio.fit2dimage --hidden-import fabio.fit2dmaskimage --hidden-import fabio.fit2dspreadsheetimage --hidden-import fabio.GEimage --hidden-import fabio.hdf5image --hidden-import fabio.HiPiCimage --hidden-import fabio.jpeg2kimage --hidden-import fabio.jpegimage --hidden-import fabio.kcdimage --hidden-import fabio.limaimage --hidden-import fabio.mar345image --hidden-import fabio.marccdimage --hidden-import fabio.mpaimage --hidden-import fabio.mrcimage --hidden-import fabio.nexus --hidden-import fabio.numpyimage --hidden-import fabio.openimage --hidden-import fabio.OXDimage --hidden-import fabio.pilatusimage --hidden-import fabio.pixiimage --hidden-import fabio.pnmimage --hidden-import fabio.raxisimage --hidden-import fabio.readbytestream --hidden-import fabio.setup --hidden-import fabio.sparseimage --hidden-import fabio.speimage --hidden-import fabio.templateimage --hidden-import fabio.TiffIO --hidden-import fabio.tifimage --hidden-import fabio.xsdimage --hidden-import fabio._version --hidden-import fabio.__init__
然后将这一大串粘贴到原来的字符串里面,得到:
pyinstaller --noconfirm --onedir --windowed --add-data "C:/Users/bxx/Desktop/asdf/proccesing/icons;icons/" --hidden-import fabio.adscimage --hidden-import fabio.binaryimage --hidden-import fabio.bruker100image --hidden-import fabio.brukerimage --hidden-import fabio.cbfimage --hidden-import fabio.converters --hidden-import fabio.datIO --hidden-import fabio.directories --hidden-import fabio.dm3image --hidden-import fabio.dtrekimage --hidden-import fabio.edfimage --hidden-import fabio.eigerimage --hidden-import fabio.esperantoimage --hidden-import fabio.fabioformats --hidden-import fabio.fabioimage --hidden-import fabio.fabioutils --hidden-import fabio.file_series --hidden-import fabio.fit2dimage --hidden-import fabio.fit2dmaskimage --hidden-import fabio.fit2dspreadsheetimage --hidden-import fabio.GEimage --hidden-import fabio.hdf5image --hidden-import fabio.HiPiCimage --hidden-import fabio.jpeg2kimage --hidden-import fabio.jpegimage --hidden-import fabio.kcdimage --hidden-import fabio.limaimage --hidden-import fabio.mar345image --hidden-import fabio.marccdimage --hidden-import fabio.mpaimage --hidden-import fabio.mrcimage --hidden-import fabio.nexus --hidden-import fabio.numpyimage --hidden-import fabio.openimage --hidden-import fabio.OXDimage --hidden-import fabio.pilatusimage --hidden-import fabio.pixiimage --hidden-import fabio.pnmimage --hidden-import fabio.raxisimage --hidden-import fabio.readbytestream --hidden-import fabio.setup --hidden-import fabio.sparseimage --hidden-import fabio.speimage --hidden-import fabio.templateimage --hidden-import fabio.TiffIO --hidden-import fabio.tifimage --hidden-import fabio.xsdimage --hidden-import fabio._version --hidden-import fabio.__init__ "C:/Users/bxx/Desktop/asdf/proccesing/main.py"
然后就打包成功了,虽然我到现在也不知道为什么找不到那个包下面的所有文件,不过还好解决了我的问题。做个记录吧。