转换为exe和模块突然不起作用

时间:2019-07-14 09:27:09

标签: python module exe pyinstaller

我正在使用pyinstaller将.py文件转换为exe。 当我从命令行运行py文件时,它可以正常运行,但是当我使用pyinstaller将其转换为.exe时,在包含导入模块的行上会出现错误。我知道我可能需要编辑规格文件,但是即使如此,我还是很困惑。 这里有什么帮助吗?!?!?!谢谢!

from PyPDF2 import PdfFileWriter, PdfFileReader
import fitz
import os
import re
import pandas as pd
import datetime
import email, smtplib, ssl
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email import encoders
import glob

编辑: 但是,在我的代码中,我包含了

#Master PDF to be parsed. Must be in the same folder as 'exe' file 
file_name = glob.glob('.pdf') 
if file_name == []: 
    file_name = glob.glob('.PDF')[0] 
else: 
    file_name = file_name[0] 

当我运行exe文件时,在该行上出现索引错误。

1 个答案:

答案 0 :(得分:0)

PyInstaller将处理上述所有模块,除了pandas模块,该模块需要与Tree类一起使用,以将lib文件夹与可执行文件捆绑在一起。

我仅添加pandas Python路径(例如./env/Lib/site-packages/pandas),您需要根据Python路径进行编辑:

# -*- mode: python -*-

block_cipher = None


a = Analysis(['script.py'],
             pathex=['<project_path>'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
a.datas += Tree("./env/Lib/site-packages/pandas", prefix="pandas")
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='script',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )

最后,使用pyinstaller script.spec生成可执行文件。