【问题标题】:converting to exe and modules suddenly not working转换为 exe 和模块突然不起作用
【发布时间】:2019-07-14 09:27:09
【问题描述】:

我正在使用 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 文件时,该行出现索引错误。

【问题讨论】:

    标签: python module exe pyinstaller


    【解决方案1】:

    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 生成您的可执行文件。

    【讨论】:

    • 谢谢。但是,在我的代码中,我包含了要解析的 ``` #Master PDF。必须与“exe”文件位于同一文件夹中 file_name = glob.glob('.pdf') if file_name == []: file_name = glob.glob('.PDF')[0] else: file_name = file_name[0] ``` 当我运行 exe 文件时,该行出现索引错误
    • 我现在收到此错误 No such file or directory: './env/Lib/site-packages/pandas'
    • @user5279 正如我所说,您应该根据您的系统将此路径更改为当前 python 路径。例如,如果您在 C:/Program Files/Python37 上安装 Python,它将变为 C:/Program Files/Python37/Lib/site-packages/pandas
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2020-04-02
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多