Windows上的PyInstaller可执行文件由于PortAudio库问题而无法运行(OSError)

加布里埃尔·佩纳(Gabriel Pena)

我正在尝试使用PyInstaller从Python 3.7应用程序在Windows上构建.exe。该构建似乎运行顺利,没有显示任何错误;但是,在Windows命令提示符下执行文件会导致以下可怕错误:

OSError:找不到PortAudio库

我已经对该问题进行了一些研究并找到了一些信息,但仍然无法克服。我的应用程序使用sounddevice库,该库取决于PortAudio库。已安装PortAudio,因为当我直接使用Python运行该应用程序时,该应用程序可以完美运行;问题显然是,PyInstaller以某种不同的方式跟踪依赖项,无法找到它并将其链接到构建。

实际上,这种“不同方式”是从“ ctypes.util” Python库调用“ find_library”函数来查找系统上的PortAudio库。因此,我在Python上运行了以下命令,并确认它无法找到该库。

Python 3.7.1(默认值,2018年12月10日22:54:23)[MSC v.1915 64位(AMD64)] ::> Anaconda,Inc.在win32上键入“ help”,“ copyright”,“ credits”或有关更多信息的“许可证”。

从ctypes.util导入find_library

一个= find_library('portaudio')

打印(a)

没有

到目前为止,我已经尝试了几种解决方案。首先,我手动下载并编译了最新的PortAudio版本。没用 然后,我尝试使用Anaconda代替正式的Python发行版;如您所知,Anaconda的包管理器“ conda”可以处理PortAudio之类的C库。因此,我将其安装在Anaconda的虚拟环境中,并尝试在其中构建我的应用程序。也没用。我也尝试将PortAudio目录添加到Windows PATH变量,但是也失败了。我有点迷路了。我尚未尝试的唯一想法是使用Wine在Linux上构建它,但是我怀疑可能有一种使其在Windows上运行的方法。

有任何想法吗?

加布里埃尔·佩纳(Gabriel Pena)

我设法自己解决了。我将发布答案,这可能对某人有用。

我认为是对的。ctypes检查Windows PATH环境变量中定义的文件夹,并在它们中搜索库。事实是,在Linux上,系统使用某种别名,因此当

from ctypes.util import find_library
find_library('portaudio')

它返回正确的portaudio库。但是在Windows上,仅检查文件名。因此,您必须确保满足以下两个条件:

  • 含PortAudio的DLL的目录在PATH环境变量。
  • DLL文件名(不带扩展名)必须完全是“ portaudio”。

关于DLL,如果您在Python应用中使用sounddevice,则应该可以在这里找到它们:

\ your \ path \ to \ python \ Lib \ site-packages_sounddevice_data \ portaudio-binaries

该文件名为“ libportaudio64bit.dll”,因此仅将该目录添加到PATH并不能解决问题。为了克服这个问题,我只是将dll复制到另一个目录,将其重命名为“ portaudio.dll”,然后将该目录添加到PATH中。像魔术一样工作。

如果您不使用声音设备,也可以从此处下载这些相同的预编译DLL:

https://github.com/spatialaudio/portaudio-binaries

就这样。希望能帮助到你!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法加载可执行文件

来自分类Dev

使可执行文件在Linux中运行而无提示

来自分类Dev

PyInstaller:单文件可执行文件不运行

来自分类Dev

选择要在Windows上运行的Java可执行文件

来自分类Dev

运行可执行文件的语法?

来自分类Dev

在gulp-watch上运行可执行文件

来自分类Dev

PyInstaller到lunx中的可执行文件,给出:运行upx -v时出错?

来自分类Dev

PyInstaller可执行文件无法获取TorchScript的源代码

来自分类Dev

如何为PyInstaller可执行文件指定Python版本和库版本

来自分类Dev

在Powershell中运行可执行文件而无需等待返回

来自分类Dev

在NTFS分区上运行可执行文件?

来自分类Dev

无法在64位Ubuntu上运行32位动态可执行文件

来自分类Dev

运行可执行文件

来自分类Dev

由于“错误的cpu类型一可执行文件”而无法使用hombrew

来自分类Dev

C ++可执行文件无法在Windows 7中运行-64位不兼容

来自分类Dev

无法在Mac上的Wine中运行Windows可执行文件

来自分类Dev

Windows如何确定要运行的可执行文件

来自分类Dev

在PowerShell中运行可执行文件而无需键入文件扩展名

来自分类Dev

无法在Ubuntu 12.04上运行二进制可执行文件

来自分类Dev

可执行文件无法正常运行[Linux]

来自分类Dev

如何在Ubuntu上使用PyInstaller创建Windows可执行文件?

来自分类Dev

如何在Ubuntu上使用PyInstaller创建Windows可执行文件?

来自分类Dev

运行可执行文件的语法?

来自分类Dev

.JAR可执行文件无法正常运行

来自分类Dev

根本无法运行可执行文件

来自分类Dev

无法在挂载分区上运行可执行文件

来自分类Dev

使用 CodeBlocks + GCC 构建的可执行文件可以在任何 Windows 上运行吗?

来自分类Dev

pyinstaller 可执行文件不在 Ubuntu 18.04.1 中运行

来自分类Dev

cmake,无法运行与预编译共享库链接的可执行文件

Related 相关文章

  1. 1

    无法加载可执行文件

  2. 2

    使可执行文件在Linux中运行而无提示

  3. 3

    PyInstaller:单文件可执行文件不运行

  4. 4

    选择要在Windows上运行的Java可执行文件

  5. 5

    运行可执行文件的语法?

  6. 6

    在gulp-watch上运行可执行文件

  7. 7

    PyInstaller到lunx中的可执行文件,给出:运行upx -v时出错?

  8. 8

    PyInstaller可执行文件无法获取TorchScript的源代码

  9. 9

    如何为PyInstaller可执行文件指定Python版本和库版本

  10. 10

    在Powershell中运行可执行文件而无需等待返回

  11. 11

    在NTFS分区上运行可执行文件?

  12. 12

    无法在64位Ubuntu上运行32位动态可执行文件

  13. 13

    运行可执行文件

  14. 14

    由于“错误的cpu类型一可执行文件”而无法使用hombrew

  15. 15

    C ++可执行文件无法在Windows 7中运行-64位不兼容

  16. 16

    无法在Mac上的Wine中运行Windows可执行文件

  17. 17

    Windows如何确定要运行的可执行文件

  18. 18

    在PowerShell中运行可执行文件而无需键入文件扩展名

  19. 19

    无法在Ubuntu 12.04上运行二进制可执行文件

  20. 20

    可执行文件无法正常运行[Linux]

  21. 21

    如何在Ubuntu上使用PyInstaller创建Windows可执行文件?

  22. 22

    如何在Ubuntu上使用PyInstaller创建Windows可执行文件?

  23. 23

    运行可执行文件的语法?

  24. 24

    .JAR可执行文件无法正常运行

  25. 25

    根本无法运行可执行文件

  26. 26

    无法在挂载分区上运行可执行文件

  27. 27

    使用 CodeBlocks + GCC 构建的可执行文件可以在任何 Windows 上运行吗?

  28. 28

    pyinstaller 可执行文件不在 Ubuntu 18.04.1 中运行

  29. 29

    cmake,无法运行与预编译共享库链接的可执行文件

热门标签

归档