Python 2.7 IO错误:使用py2exe冻结后生成条形码时无法打开图像

Python 2.7 IO错误:使用py2exe冻结后生成条形码时无法打开图像,python-2.7,python-imaging-library,barcode,py2exe,ioerror,Python 2.7,Python Imaging Library,Barcode,Py2exe,Ioerror,我使用pyBarcode库在我的软件中生成条形码,当我从命令行加载它时,它工作得非常好,但一旦我使用py2exe冻结整个软件,我在生成条形码时会出现IO错误 File "panels.pyc", line 383, in generate File "barcodeGenerator.pyc", line 9, in generate File "barcode\base.pyc", line 68, in save File "barcode\codex.pyc", line 251, in

我使用pyBarcode库在我的软件中生成条形码,当我从命令行加载它时,它工作得非常好,但一旦我使用py2exe冻结整个软件,我在生成条形码时会出现IO错误

File "panels.pyc", line 383, in generate
File "barcodeGenerator.pyc", line 9, in generate
File "barcode\base.pyc", line 68, in save
File "barcode\codex.pyc", line 251, in render
File "barcode\base.pyc", line 103, in render
File "barcode\writer.pyc", line 188, in render
File "barcode\writer.pyc", line 280, in _paint_text
File "PIL\ImageFont.pyc", line 248, in truetype
File "PIL\ImageFont.pyc", line 146, in __init__
IOError: cannot open resource
这里panels.py是我的python脚本,我在这里调用barcodeGenerator.py的generate方法,下面给出了它的代码

条形码生成器.py:-

import barcode
from barcode import generate
from barcode.writer import ImageWriter
from PIL import PngImagePlugin

def generate(details,path):
  EAN = barcode.get_barcode_class('code128')
  ean = EAN(details, writer=ImageWriter())
  barcodePic = ean.save(path + 'barcode')
是的,用于冻结的setup.py文件是:-

from distutils.core import setup
import py2exe

includes = ["HuffmanDictionary"]

setup(
options = {
            "py2exe": {"includes": includes}
          },
console=['MainFrame.py',"extraModules.py","encode.py","decode.py","panels.py","barcodeGenerator.py" ]
)
请告诉我一点我犯的错误。我很快就要完成整个软件了。这是最后一个错误,我使用的是64位windows 7


编辑:我已经尝试过了,但仍然不适合我。

最后,在深入谷歌并在py2exe的邮件列表上提问后,我意识到py2exe中存在一些错误,它只是没有包括一些模块,没有任何原因。因此,我在.exe文件夹中添加了整个模块作为include_包,这很有吸引力。此外,cx_Freeze是使用py2exe的一个很好的替代品,因为它易于使用,并且在多个平台上受支持

希望这能帮助那些浪费时间在互联网上搜索的人。

我在[你的python安装目录]\Lib\site packages\barcode\writer.py中找到了这个

PATH = os.path.dirname(os.path.abspath(__file__))
FONT = os.path.join(PATH, 'DejaVuSansMono.ttf')
#FONT = os.path.join(PATH, 'DejaVuSansMono.ttf')
FONT = 'arial.ttf'
DejaVuSansMono.ttf也在同一目录中。 但是,在cx_冻结构建之后,条形码编写器为ImageFont提供了一个无效的字体路径

我的解决方法是将DejaVuSansMono.ttf复制到PC上的
Windows\Fonts
OS文件夹,该文件夹将运行生成的可执行文件

类似问题

另一种解决方法是修改条形码\writer.py

PATH = os.path.dirname(os.path.abspath(__file__))
FONT = os.path.join(PATH, 'DejaVuSansMono.ttf')
#FONT = os.path.join(PATH, 'DejaVuSansMono.ttf')
FONT = 'arial.ttf'

我认为arial.ttf应该在每个
Windows\Fonts
(默认字体路径)目录中。

您能提供关于py2exe解决方案的更多信息吗?我也有同样的问题,我已经在我的配置文件中包含了整个条形码模块,但是我仍然收到这个错误。您的py2exe配置是什么样子的?还要确保在py2exe包选项中包含PIL