python - PyInstaller 生成的 exe 不工作,项目使用 ReportLab

标签 python pyside reportlab pyinstaller

我正在尝试为我的项目生成一个 exe。大约一个月前,当我的项目没有使用 ReportLab 时,它可以毫无问题地工作,但现在,就没有那么多了。

经过查找,发现问题是a missing import在其中一个 pyinstaller 文件中。 问题解决了吗?不完全是。

现在我得到这个错误...

Traceback (most recent call last):
File "<string>", line 18, in <module>
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in importHook 
mod = _self_doimport(nm, ctx, fqname)
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in doimport
exec co in mod.__dict__
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\myproject\build\pyi.win32\myproject\out00-PYZ.pyz\reports.My_Report_File", line 10, in <module>
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 431, in importHook
mod = self.doimport(nm, ctx, ctx + '.' + nm)
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in doimport
exec co in mod.__dict__
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\myproject\build\pyi.win32\myproject\out00-PYZ.pyz\reportlab.pdfgen.canvas", line 25, in <module>
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 431, in importHook
mod = self.doimport(nm, ctx, ctx + '.' + nm)
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in doimport
exec co in mod.__dict__
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\myproject\build\pyi.win32\myproject\out00-PYZ.pyz\reportlab.pdfbase.pdfdoc", line 22, in <module>
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 431, in importHook
mod = self.doimport(nm, ctx, ctx + '.' + nm)
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in doimport
exec co in mod.__dict__
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\myproject\build\pyi.win32\myproject\out00-PYZ.pyz\reportlab.pdfbase.pdfmetrics", line 23, in <module>
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 431, in importHook
mod = self.doimport(nm, ctx, ctx + '.' + nm)
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in doimport
exec co in mod.__dict__
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\myproject\build\pyi.win32\myproject\out00-PYZ.pyz\reportlab.pdfbase._fontdata", line 158, in <module>
File "F:\Python\pyinstaller-2.0\pyinstaller-2.0\PyInstaller\loader\iu.py", line 409, in importHook
raise ImportError("No module named %s" % fqname)
ImportError: No module named _fontdata_enc_winansi

四处寻找,我找到了this导致只有一个建议的解决方案是强制我的代码文件中的所有导入。我有太多的报告文件,让我很难考虑这样做。

我阅读了一些关于隐藏导入的内容。也许这可以帮助我,但我不知道。任何帮助,将不胜感激。谢谢。

编辑:A similar py2exe 的问题和解决方案....

最佳答案

我不知道这是否是正确的方法...但我开始担心了。

在阅读并浪费了大量时间之后,......

我发现有人建议复制整个丢失的库文件夹(在我的例子中它在我的 pythonxx 的站点包中)到包含 exe 的文件夹中。瓦拉!它奏效了。

如果有更好的/正确的方法来做到这一点,请赐教。

关于python - PyInstaller 生成的 exe 不工作,项目使用 ReportLab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18573161/

相关文章:

python - ReportLabs Django 集成

python - 从 PIL 图像或 StringIO 将图像插入 Reportlab

python - 为什么python双引号在文件名中转换为连字符?

python - 有没有一种干净的方法可以为 argparse 选择的每个选择编写一行帮助?

python - Windows 上多个 Python 安装的奇怪问题

qt - 为什么不添加菜单?

python - Pyside PyQt,如何将 Key_Delete 连接到 4 个不同的 QListWidget

c++ - 通过Qt Application约束其他应用程序的窗口大小

python - Django-Rest-Framework 端点无法访问我的数据库集合

python - 等到具体时间