Python模块patoolib exe文件错误没有名为“patoolib.programs”的模块

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

我在我的一个项目中使用 patoolib 来提取档案。我使用 Pyinstaller 获取单个可执行文件,然后运行 exe 文件,显示没有名为“patolib.programs”的模块。 '

我的 python 文件已成功执行,但我的 exe 文件显示错误:没有名为“patolib.programs”的模块。

python zip
1个回答
0
投票

错误“没有名为‘patoolib.programs’的模块”表明当您使用 PyInstaller 时,patoolib 模块没有与您的可执行文件正确捆绑。要解决此问题,您需要在构建可执行文件时显式包含 patoolib 包。具体方法如下:

  1. 创建规格文件

    首先,使用“--name”选项为您的项目创建一个 PyInstaller 规范文件(“.spec”)来指定输出可执行文件的名称。将 my_app 替换为您想要的可执行文件名称:

    pyinstaller --name my_app main.py
    

    这将在与脚本相同的目录中生成一个名为 my_app.spec 的 .spec 文件。

  2. 编辑规格文件:

    使用文本编辑器打开生成的 .spec 文件(例如 my_app.spec)。添加以下行以显式包含 patoolib 包:

    # Add this block to the spec file to include patoolib
    a = Analysis(['main.py'],
            pathex=[], 
            binaries=[],
            datas=[('/path/to/patoolib', 'patoolib')], # Change dummy patoolib path to absolute patoolib path
            ...
        )
    

    确保将“/path/to/your/project”替换为项目目录的实际路径,并根据需要调整 .spec 文件中的任何其他选项。

  3. 构建可执行文件:

    使用修改后的 .spec 文件构建可执行文件:

    pyinstaller my_app.spec
    

    将 my_app.spec 替换为您的规范文件的名称。

  4. 测试可执行文件: 找到生成的 .exe 文件(通常位于 dist 目录中)并运行它。可执行文件现在应该包含 patoolib 包并执行您的程序,而不会出现任何“没有名为 'patoolib.programs' 的模块”错误。

    通过将 datas 参数添加到您的 .spec 文件以显式包含 patoolib 包,您可以确保它与您的可执行文件捆绑在一起。这应该可以解决您遇到的导入错误。

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