1、遇到错误时 File "stringsource", line 104, in init scipy.interpolate.interpnd
AttributeError: type object 'scipy.interpolate.interpnd.array' has no attribute '__reduce_cython__'
[34604] Failed to execute script demo2
解决方法:
打包时导入隐藏包 pyinstaller -F XXX.py --hidden-import scipy._lib.messagestream
2、打包时路径问题
导入模型时不能直接使用相对路径。可以使用绝对路径,但是移动到其他设备上时比较麻烦,因此出现了冻结路径的方法。
增加一个文件frozen_dir.py
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 25 22:41:09 2018
frozen dir
@author: yanhua
"""
import sys
import os
def app_path():
"""Returns the base application path."""
if hasattr(sys, 'frozen'):
# Handles PyInstaller
return os.path.dirname(sys.executable)
return os.path.dirname(__file__)
在代码中调用frozen_dir的方法:
import frozen_dir
SETUP_DIR = frozen_dir.app_path()
FONT_MSYH = matplotlib.font_manager.FontProperties(
fname = SETUP_DIR + r'\data\fonts\msyh.ttf',
size = 8)
DIR_HELP_DOC = SETUP_DIR + r'\data\docs'
DIR_HELP_VIDEO = SETUP_DIR + r'\data\videos'
3、未打包opencv的问题
自己手动添加,文件名opencv_ffmpeg341_64.dll
4、UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 126: invalid continuation byte
先在命令行输入:chcp 65001
5、涉及到TensorFlow的代码,直接封装并执行可能会由于TensorFlow的问题而异常,因此需要在打包时指定依赖库,通过如下命令打包:
pyinstaller -F --hiddenimport tensorflow **.py
6、打包caffe代码时,打包成功后,运行出现AttributeError: 'module' object has no attribute 'LabelMap'错误
在打包时加上sudo, 例如:sudo pyinstaller ......
7、打包完执行过程出现的错误,You may load I/O plugins with the `skimage.io.use_plugin` command. A list of all available plugins 。
新建一个hook-skimage.io.py文件,里边的内容为:
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
datas = collect_data_files("skimage.io._plugins")
hiddenimports = collect_submodules('skimage.io._plugins')
将hook-skimage.io.py文件放在hooks文件夹下,打包时添加--additional-hooks-dir=./hooks命令
例如:sudo pyinstaller -F --hidden-import=pywt --hidden-import=pywt._extensions._cwt --additional-hooks-dir=./hooks test.py