使用 patoolib 为 Python 脚本创建 .exe 文件时出现问题:“没有名为 'patolib.programs' 的模块”

问题描述 投票:0回答:1

在尝试为使用 patoolib(版本 1.12)提取存档文件(例如 ZIP、RAR)的 Python 脚本创建可执行 (.exe) 文件时,我遇到了一个特殊问题。当作为 .py 文件执行时,该脚本运行完美,但在尝试使用 PyInstaller 等工具创建可执行文件时遇到错误。我收到的错误消息是:

没有名为“patolib.programs”的模块

以下是我的设置的具体信息:

  • Python版本:3.11.4

  • patolib版本:1.12

  • 操作系统:Windows 10

  • 创建可执行文件的命令(PyInstaller):

    pyinstaller my_script.py --onefile
    

    我尝试了各种方法来解决此问题,包括:

    1. 与 PyInstaller 一起使用 --hidden-import 将 patoolib.programs 指定为导入模块。
    2. 确保使用 pip install patoolib 在我的 Python 环境中正确安装 patoolib。

    尽管进行了这些尝试,但在尝试执行 .exe 文件时,我仍然遇到“没有名为 'patolib.programs' 的模块”错误。

是否有其他人在 Windows 上遇到过 patoolib 1.12 版的类似问题?如果有,采取了哪些步骤来解决该问题?任何有关解决此问题的见解或指导将不胜感激。谢谢!

python zip pyinstaller exe
1个回答
0
投票

如果您在尝试使用 patoolib(版本 1.12)为 Python 脚本创建可执行 (.exe) 文件时遇到“没有名为 'patoolib.programs' 的模块”错误,并且您希望避免使用 --hidden-import,则您可以可以尝试使用 PyInstaller .spec 文件中的 datas 选项包含必要的模块。具体方法如下:

  1. 生成.spec文件:

    首先,确保您已为 Python 脚本生成了 .spec 文件。如果您还没有创建它,请使用以下命令创建它(将 my_script.py 替换为您的脚本名称):

    pyinstaller --name my_script --onefile my_script.py
    

    此命令将在与脚本相同的目录中创建一个 .spec 文件。

  2. 打开.spec文件:

    在文本编辑器中打开生成的 .spec 文件(例如 my_script.spec)。

  3. 找到分析部分:

    在 .spec 文件中,找到“分析”部分,其中列出了要包含在可执行文件中的模块和依赖项。它应该看起来像这样:

    a = Analysis(
            ['my_script.py'],
            pathex=['/path/to/your/script'],
            binaries=[],
            datas=[],
            # ...
    )
    
  4. 使用数据指定“patolib.programs”模块:

    要包含 patoolib.programs 模块,您可以在数据列表中将其指定为元组。在“分析”部分添加以下行:

    datas=[('path/to/patoolib', 'patoolib')]
    

    将 'path/to/patolib/programs.py' 替换为 patoolib 包中的programs.py 文件的实际路径。

  5. 保存.spec文件:

    保存对 .spec 文件所做的更改。

  6. 重建可执行文件:

    最后,使用修改后的 .spec 文件重建可执行文件:

    pyinstaller my_script.spec
    

    此命令将创建一个具有更新的依赖项的新可执行文件,包括 patoolib.programs。

通过在 .spec 文件的 datas 选项中指定“patolib.programs”模块,您应该能够在使用 PyInstaller 为 Python 脚本创建可执行文件时解决“没有名为“patolib.programs”的模块”错误,而无需使用需要 --hidden-import。

© www.soinside.com 2019 - 2024. All rights reserved.