安装成功后无法在 python 中导入 sox 包

Unable to import sox package in python after successful installation

我使用命令“conda install -c conda-forge sox”安装了 sox,使用“conda install -c davidbgonzalez pysox[=15=”安装了 pysox ]'。但是当我尝试导入 sox 时,它显示 'No module named sox'。如何解决这个问题?

如果您查看 https://pythonhosted.org/pysox/intro.html#simple-examples 中的示例,则需要导入 pysox,而不是 sox:

$ python
Python 2.7.15 |Anaconda, Inc.| (default, Oct 23 2018, 18:31:10) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pysox # or the one below
>>> from pysox import sox

此外,第一次尝试此操作时,您可能会看到错误:

>>> import pysox
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/p/lib/python2.7/site-packages/pysox/__init__.py", line 60, in <module>
    from pysox.sox import CSoxStream, CEffect, CEffectsChain, CPysoxPipeStream
ImportError: libsox.so.2: cannot open shared object file: No such file or directory

这是因为 conda-forge 提供了 sox v14.4.2(它提供 libsox.so.3),而 davidbgonzalez 提供的 pysox 是针对旧版本构建的。

查看 https://abi-laboratory.pro/index.php?view=timeline&l=sox 并希望此版本的 pysox 不使用任何已删除的符号,然后您可以通过创建符号链接并祈祷来解决此问题:

$ ln -s $CONDA_PREFIX/lib/libsox.so.{3,2}

$ ls -l $CONDA_PREFIX/lib/libsox.so.2
lrwxrwxrwx. 1 nwani nwani 22 Nov 10 23:54 /tmp/p/lib/libsox.so.2 -> /tmp/p/lib/libsox.so.3