m0_70479479 2022-05-05 04:43 采纳率: 100%
浏览 275
已结题

生成条形码PyCharm 环境下可正常运行,利用Pyinstaller打包后系统报错OSError: cannot open resource,如何解决?(语言-python)

#报错信息
Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter_init_.py", line 1921, in call
File "a1.py", line 29, in cz_cli
File "barcode\base.py", line 65, in save
File "barcode\codex.py", line 257, in render
File "barcode\base.py", line 105, in render
File "barcode\writer.py", line 227, in render
File "barcode\writer.py", line 372, in _paint_text
File "PIL\ImageFont.py", line 878, in truetype
File "PIL\ImageFont.py", line 875, in freetype
File "PIL\ImageFont.py", line 226, in init
OSError: cannot open resource
#报错代码
from pystrich.code128 import Code128Encoder
import openpyxl
import barcode
import os
from barcode.writer import ImageWriter
from openpyxl.drawing.image import Image
import tkinter
import winreg
#获取系统桌面路径
def get_desktop():
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
return winreg.QueryValueEx(key, "Desktop")[0]
Desktop_path=str(get_desktop())
wbb=openpyxl.Workbook()
wbb.create_sheet(title='打印',index=0)
wbb.save(Desktop_path+'/打印表.xlsx') # 保存
barcode.writer.FONT=os.path.join('AdobeGothicStd-Bold.otf')
def cz_cli():
#生成条形码保存为图片
bm='123456789'
tm = barcode.get_barcode_class('code128')
tmgs=tm(bm, writer=ImageWriter())
#条形码间距,文本与条码间距,文本尺寸,分辨率
tmgs.save(Desktop_path+'/code128',{'module_width':0.3,'text_distance':0.5,'font_size':20,'dpi':200})

#加载图片到EXCEL
wb = openpyxl.load_workbook(Desktop_path+'/打印表.xlsx')
ws = wb['打印']
img=Image(Desktop_path+'/code128.png')
ws.add_image(img,'B1')
wb.save(Desktop_path+'/打印表.xlsx')

dl_win = tkinter.Tk()
dl_win.title('登录窗口')
dl_win.geometry('%dx%d+%d+%d' % (300, 210, 100, 100))
cz_b = tkinter.Button(dl_win, text='生成', width=8, command=cz_cli)
cz_b.place(x=60, y=40)
dl_win.mainloop()

  • 写回答

3条回答 默认 最新

  • 溪风沐雪 2022-05-05 09:26
    关注

    我估计问题出在barcode.writer.FONT=os.path.join('AdobeGothicStd-Bold.otf')这一行,因为报错提示信息是关于字体的,而你使用的这个字体并不是系统默认自带的字体,所以要不换一个字体试试,要不就把这个字体文件也一起打包到exe里边去,不然的话即使在你电脑上能运行,换个电脑依然会出问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月13日
  • 已采纳回答 5月5日
  • 创建了问题 5月5日

悬赏问题

  • ¥15 关于#极限编程#的问题,请各位专家解答!
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统
  • ¥15 VB.NET2022如何生成发布成exe文件
  • ¥30 matlab appdesigner私有函数嵌套整合
  • ¥15 vb6.0使用jmail接收smtp邮件并另存附件到D盘
  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!