为什么 pyinstaller 在 Python 3.6 中与 pdfminer 模块一起使用时会创建一个巨大的 exe 文件?

Why does pyinstaller create a huge exe file when using it with pdfminer modules in Python 3.6?

我尝试使用 pyinstaller(在 Python 3.6 中)从一个使用 pdfminer 模块的脚本创建一个 exe 文件,但是创建的 exe 文件很大,大约 240 MB.相比之下,当使用 Python 2.7 中的 pyinstaller 和类似的脚本时,创建的 exe 文件只有大约 10 MB。

我做错了什么?

我使用以下命令创建 exe 文件:pyinstaller.exe --onefile {filename/path}

我的代码:

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage

...

def convert_pdf_to_txt(path):
    rsrcmgr = PDFResourceManager()
    retstr = io.StringIO()
    #codec = 'windows-1250'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)
    fp = open(path, 'rb')
    # reply = s.get(path, stream=True, verify= False)
    # fp = StringIO()
    # fp.write(reply.content)
    # fp.seek(0)
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos = set()

    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password, caching=caching, check_extractable=True):
        interpreter.process_page(page)

    text = retstr.getvalue()

    fp.close()
    device.close()
    retstr.close()
    return text

...

我找到了以下解决方案:

  1. 创建了虚拟环境
  2. 通过 pip 仅安装所需的包(即 pdfminer 和 pyinstaller)。

现在的结果是一个只有 7.8 MB 的 exe 文件。