【发布时间】:2018-11-08 15:44:37
【问题描述】:
我使用命令“conda install -c conda-forge sox”安装了 sox,使用命令“conda install -c davidbgonzalez pysox”安装了 pysox。但是当我尝试导入 sox 时,它会显示“没有名为 sox 的模块”。如何解决这个问题?
【问题讨论】:
我使用命令“conda install -c conda-forge sox”安装了 sox,使用命令“conda install -c davidbgonzalez pysox”安装了 pysox。但是当我尝试导入 sox 时,它会显示“没有名为 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
【讨论】: