pyinstaller打包时出现的一些错误

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

 

你可能感兴趣的:(pyinstaller打包时出现的一些错误)