小编Kev*_*ian的帖子

Pyinstaller - 编译应用程序后找不到 libmagic

问题

我正在用 Python 编写一个应用程序。它在我的 python 环境中运行良好,但是当我使用 PyInstaller 编译它并尝试运行生成的可执行文件时,我收到以下错误:ImportError: failed to find libmagic. Check your installation

我有一种感觉,这与“python-magic-bin”有关,该安装包含名为“magic”的模块所需的二进制文件,因为如果我从 Python 环境中卸载“python-magic-bin”并尝试运行该应用程序,我得到了完全相同的错误。我认为由于某种原因,这些二进制文件没有被带到编译的 exe 中。

如果它有所作为,我从 .whl 文件安装了“python-magic-bin”。此安装在安装“magic”的目录中添加了一个名为“libmagic”的文件夹 libmagic.dll 和 magic.mgc。

如果我的问题是正确的,我如何让 PyInstaller 携带“魔法”需要的二进制文件?

重现问题

可以执行以下操作来重现问题:

  1. 将此代码复制并粘贴到您的编辑器中。将其另存为名为“test.py”的文件

    import magic
    
    m=magic.MAGIC_NONE
    print(m)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从此链接下载“python_magic_bin-0.4.14-py2.py3-none-win32.whl”并在解释器中使用以下命令将所需的库安装到Python 3.6

    >>> pip install pyinstaller
    >>> pip install python-magic
    >>> pip install python_magic_bin-0.4.14-py2.py3-none-win32.whl
    >>> pip install libmagic
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在与“test.py”文件相同的目录中打开命令提示符,并使用以下命令使用 pyinstaller 编译程序:

    > pyinstaller test.py
    
    Run Code Online (Sandbox Code Playgroud)
  4. 完成后,移动到新创建的 /dist/test 目录 ( cd ./dist/test) 并使用以下命令运行 .exe:

    > ./test.exe
    
    Run Code Online (Sandbox Code Playgroud)

运行后,你应该看到一个错误读数:ImportError: failed to find libmagic. Check …

python pyinstaller python-3.x libmagic python-3.6

3
推荐指数
1
解决办法
1362
查看次数

标签 统计

libmagic ×1

pyinstaller ×1

python ×1

python-3.6 ×1

python-3.x ×1