安装pocketsphinx Python模块:命令'swig.exe'失败。

24

我遇到了类似这样的问题,请问有人能告诉我如何解决吗。

C:\Users\krush\Documents\ML using Python>pip install pocketsphinx
Collecting pocketsphinx
  Using cached pocketsphinx-0.1.3.zip
Building wheels for collected packages: pocketsphinx
  Running setup.py bdist_wheel for pocketsphinx: started
  Running setup.py bdist_wheel for pocketsphinx: finished with status 'error'
  Complete output from command C:\Users\krush\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\krush\\AppData\\Local\\Temp\\pip-build-cns2i_wb\\pocketsphinx\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d C:\Users\krush\AppData\Local\Temp\tmp3tyvnl9wpip-wheel- --python-tag cp36:
  running bdist_wheel
  running build_ext
  building 'sphinxbase._ad' extension
  swigging swig/sphinxbase/ad.i to swig/sphinxbase/ad_wrap.c
  swig.exe -python -modern -Ideps/sphinxbase/include -Ideps/sphinxbase/include/sphinxbase -Ideps/sphinxbase/include/win32 -Ideps/sphinxbase/swig -outdir sphinxbase -o swig/sphinxbase/ad_wrap.c swig/sphinxbase/ad.i
  error: command 'swig.exe' failed: No such file or directory

  ----------------------------------------
  Failed building wheel for pocketsphinx
  Running setup.py clean for pocketsphinx
Failed to build pocketsphinx
Installing collected packages: pocketsphinx
  Running setup.py install for pocketsphinx: started
    Running setup.py install for pocketsphinx: finished with status 'error'
    Complete output from command C:\Users\krush\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\krush\\AppData\\Local\\Temp\\pip-build-cns2i_wb\\pocketsphinx\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\krush\AppData\Local\Temp\pip-x5mxeczy-record\install-record.txt --single-version-externally-managed --compile:
    running install
    running build_ext
    building 'sphinxbase._ad' extension
    swigging swig/sphinxbase/ad.i to swig/sphinxbase/ad_wrap.c
    swig.exe -python -modern -Ideps/sphinxbase/include -Ideps/sphinxbase/include/sphinxbase -Ideps/sphinxbase/include/win32 -Ideps/sphinxbase/swig -outdir sphinxbase -o swig/sphinxbase/ad_wrap.c swig/sphinxbase/ad.i
    error: command 'swig.exe' failed: No such file or directory

    ----------------------------------------
Command "C:\Users\krush\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\krush\\AppData\\Local\\Temp\\pip-build-cns2i_wb\\pocketsphinx\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\krush\AppData\Local\Temp\pip-x5mxeczy-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\krush\AppData\Local\Temp\pip-build-cns2i_wb\pocketsphinx\

可能是安装pocketsphinx Python时找不到Swig的重复问题。 - Nikolay Shmyrev
Google Colab用户可能想要查看此答案:链接 - Rex5
12个回答

35
为了解决问题,我下载了swig for windows,当前回答的时候它是3.0.12版本。

要获取最新的swig windows版本,请访问此链接

  1. 将swig.exe复制到python安装文件夹(例如C:/python27)

  2. 打开swigwin-3.0.12/Lib文件夹,并将所有*.swg文件复制到C:/python27/Lib或等效的python路径下

  3. 打开swigwin-3.0.12/Lib/python并将所有文件复制到C:/python27/Lib

  4. 打开swigwin-3.0.12/Lib文件夹并复制typemaps文件夹到C:/python27/Lib

(还请确保您已经安装了Microsoft Visual C++ Compiler for Python)

这些步骤对我起作用了。


12
我还需要将“typemaps”文件夹复制到C:/python27/Lib文件夹中。 - sawyermclane
2
我复制了你的“swig for windows” .zip链接,安装到一个目录中,并将该目录添加到我的环境变量PATH中 - 重新打开一个新终端并运行“pip install PocketSphinx”,这次成功了。 - Jordan Stefanelli
我该如何在Linux上找到SWIG? - Naveen Reddy Marthala
1
您可以访问http://www.swig.org/download.html获取Windows的最新版本swig。 - Qin Heyang
1
使用环境变量检查正确答案。https://dev59.com/NlcP5IYBdhLWcg3wXI7Z#52329457 - PythoNic
我遇到了多个错误:(1) : 错误: 找不到 'swig.swg'SWIG\_m2crypto.i(30) : 错误: 找不到 'openssl\opensslv.h'SWIG\_m2crypto.i(33) : 错误: 找不到 'openssl\safestack.h' 等等。 - West

30
conda install swig
pip install pocketsphinx

我不想进行其他人建议的所有设置,所以我尝试了这个方法,结果它起作用了。不过,这可能只适用于使用Anaconada的情况。


1
那个有效。如果您是Windows用户,请确保以管理员身份运行Anaconda提示符。 - Idhem
我正在使用Win10,它显示“'conda'不是内部或外部命令,也不是可运行的程序或批处理文件。” - user14023416
2
我认为这应该是被接受的答案。简洁就是美。 - asparism

26

不需要将Swig文件复制到Python文件夹中,您可以将Swig的位置添加到环境变量中:

  1. 按下 Ctrl+S
  2. 输入 env, 再按下 Enter
  3. 双击 Path
  4. path-to-Swig 添加到最后一个空行
  5. 点击 OK 并重新启动计算机

1
这是一个非常好的解决方案,比当前被接受的答案更好。 - Stefan
4
你是说1.使用[Windows键] + S?2.编辑环境变量?3.在3之前按“环境变量”?根据https://superuser.com/questions/130029/refresh-environment-variable,你可以注销并重新登录,而不是5.重新启动。 - PythoNic
2
我是被采纳答案的作者,我同意这个更好。 - Jay Shenawy
1
大多数情况下,您不必重新启动计算机,只需重新启动命令行即可。 - rockikz

10

您尝试使用pip安装pocketsphinx,这将下载并编译此模块。它需要类似于swig的一些编译工具。

另一个解决方案是安装pocketsphinx的二进制版本。您可以从这里下载二进制版本。您必须根据您的安装选择正确的版本。

要确定您需要下载哪个版本,您可以运行以下命令,它将告诉您所需的版本以及您是否运行32位还是64位的Python解释器。

"C:\Users\krush\Anaconda3\python.exe" --version
"C:\Users\krush\Anaconda3\python.exe" -c "import struct;print(struct.calcsize('P') * 8)"

当你下载了正确版本后,可以输入以下命令:

"C:\Users\krush\Anaconda3\python.exe" -m pip install pocketsphinx‑0.1.3‑cp35‑cp35m‑win32.whl
"C:\Users\krush\Anaconda3\python.exe" -m pip install pocketsphinx‑0.1.3‑cp36‑cp36m‑win_amd64.whl

它完美地工作了。现在程序可以在PC离线的情况下识别音频。 - Krushi Raj
@KrushiRaj 那个下载的文件需要放在哪里?这样以下命令才能正常工作? - Tanmay Bairagi
应该与您尝试执行命令的位置在同一个目录中。请参考已接受的答案以了解更多信息。 - Krushi Raj

6

我在安装Ubuntu 16.04时遇到了同样的错误,执行了以下命令:

sudo apt-get install -y python python-dev python-pip build-essential swig git libpulse-dev

sudo pip install pocketsphinx

source: pocketsphinx-python


2

如果你正在使用Anaconda Navigator,
只需进入环境。
搜索swig,你的软件包将被显示出来。选择软件包并点击应用按钮。 它还会提示其他需要与swig一起安装的依赖项列表。
所以只需选择所有内容并点击应用按钮。
所有依赖项都将安装在Anaconda的根目录中。

这对我有用,希望能帮到你。


1

有几个命令可以解决这个问题。只需执行它们:

sudo apt-get install -y python3 python3-dev python3-pip build-essential swig git libpulse-dev

sudo apt-get install libasound2-dev

sudo pip install pocketsphinx

1

我的做法是从conda安装swing,这对编程很有帮助。

conda install swig

如果已安装,则搜索其安装位置。
where swig

enter image description here

然后将该路径添加到您的环境变量中。

0
pip install pipwin
python -m pipwin install pocketsphinx

你也可以使用pipwin来安装pocketsphinx。


0

我知道我来晚了,但对我有效的方法是下载预构建的wheel文件并手动安装它(在Windows上测试过。我相信它只能在Windows上运行)。

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pocketsphinx

只需下载正确的版本(cp39 = python 3.9)。下载完成后,在命令提示符中导航到您的下载文件夹,并输入以下命令:

pip install pocketsphinx-0.1.15-cp39-cp39-win_amd64.whl

注意:将pocketsphinx-0.1.15-cp39-cp39-win_amd64.whl更改为您下载的whl文件的名称。我选择了这个文件,因为我使用的是Python 3.9 64位版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接