【问题标题】:File converted to exe can't generate barcode文件转换为exe不能生成条码
【发布时间】:2020-06-17 12:22:41
【问题描述】:

当我通过脚本运行它时,我尝试使用 pyqt5 生成条形码并制作了一个 GUI,它运行良好,但是当我尝试生成它时将 .py 文件转换为 .exe 文件时,它提供了许多回溯

import pkg_resources.py2_warn
from PyQt5 import QtCore, QtGui, QtWidgets
import barcode
from barcode.writer import ImageWriter
import shutil
import os


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(607, 503)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(-170, 220, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayoutWidget = QtWidgets.QWidget(Form)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(130, 180, 311, 80))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.lineEdit = QtWidgets.QLineEdit(self.horizontalLayoutWidget)
        self.lineEdit.setObjectName("lineEdit")
        self.horizontalLayout.addWidget(self.lineEdit)
        self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.pushButton_2.clicked.connect(lambda: self.testEan(self.lineEdit.text()))
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "PushButton"))
        self.pushButton_2.setText(_translate("Form", "Generate"))

    def testEan(self, i):
        EAN = barcode.get_barcode_class('code128')
        s = '0' * (8 - len(str(i)) - 1) + str(i)
        ean = EAN(s, writer=ImageWriter())
        fullname = ean.save(str(i))
        try:
            os.mkdir("Barcode")
        except FileExistsError:
            pass
        try:
            shutil.move(fullname, "Barcode")
        except:
            pass
        QtWidgets.QMessageBox().about(QtWidgets.QWidget(), "Info", "Success")


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

注意:我已经导入了pkg_resources.py2_warn,因为没有它 当我尝试执行应用程序时,它不会抛出任何模块名称 pkg_resources.py2_warn


Traceback: (most recent call last)
 File "Bar.py" line 37, in <lambda>
 File "Bar.py" line 51, in testEan
 File "site packages\barcode\base.py" line 68 in save
 File "site packages\barcode\codex.py" line 261 in render
 File "site packages\barcode\base.py" line 111 in render
 File "site packages\barcode\writer.py" line 226 in render
 File "site packages\barcode\writer.py" line 356 in _paint_text
 File "site packages\PIL\ImageFont.py" line 648 in truetype
 File "site packages\PIL\ImageFont.py" line 645 in freetype
 File "site packages\PIL\ImageFont.py" line 193 in __init__
OsError : cannot open resource

OS          : windows 10
Python      : 3.8.3
Pyinstaller : 3.6

有什么办法可以克服这个回溯错误吗?

【问题讨论】:

    标签: python python-3.x python-imaging-library barcode


    【解决方案1】:

    IO Error:Cannot open image while generating barcode after freezing using py2exe

    如此处所述,您应该在代码中更改或包含字体,以便它可以读取它。 我选择将代码更改为“标准”字体。

    我也在 repo 上发布了一个类似的问题:https://github.com/WhyNotHugo/python-barcode/issues/69

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-08
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多