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

展开阅读全文

没有更多推荐了,返回首页