无法导入声音文件
Can't import soundfile
我正在使用 Anaconda 并且正在尝试导入 soundfile/pysoundfile。
我通过 运行ning
安装了这个包
conda install -c conda-forge pysoundfile
我认为它成功了,因为当我 运行
conda list
它出现了:
pyopenssl 17.2.0 py36h5d7bf08_0
pyparsing 2.2.0 py36hb281f35_0
pyqt 5.6.0 py36he5c6137_6
pysocks 1.6.7 py36hfa33cec_1
pysoundfile 0.10.1 py_0 conda-forge
pytables 3.4.2 py36hfbd7ab0_2
pytest 3.2.1 py36h9963153_1
为了确保我 运行宁 "right" python,我试过 运行宁
which python
我得到
/anaconda3/bin/python
但是当我打开 python 并尝试 运行ning
import soundfile
我得到以下信息:
Traceback (most recent call last):
File "/anaconda3/lib/python3.6/site-packages/soundfile.py", line 142, in <module>
raise OSError('sndfile library not found')
OSError: sndfile library not found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/anaconda3/lib/python3.6/site-packages/soundfile.py", line 163, in <module>
_path, '_soundfile_data', _libname))
OSError: cannot load library '/anaconda3/lib/python3.6/site-packages/_soundfile_data/libsndfile.dylib': dlopen(/anaconda3/lib/python3.6/site-packages/_soundfile_data/libsndfile.dylib, 2): image not found
出于好奇,我用文本编辑器打开 soundfile.py 文件,看看第 142 行是什么样子,它看起来像这样:
try:
_libname = _find_library('sndfile')
if _libname is None:
raise OSError('sndfile library not found') # <---- line 142
_snd = _ffi.dlopen(_libname)
except OSError:
if _sys.platform == 'darwin':
_libname = 'libsndfile.dylib'
elif _sys.platform == 'win32':
from platform import architecture as _architecture
_libname = 'libsndfile' + _architecture()[0] + '.dll'
else:
raise
# hack for packaging tools like cx_Freeze, which
# compress all scripts into a zip file
# which causes __file__ to be inside this zip file
_path = _os.path.dirname(_os.path.abspath(__file__))
while not _os.path.isdir(_path):
_path = _os.path.abspath(_os.path.join(_path, '..'))
_snd = _ffi.dlopen(_os.path.join(
_path, '_soundfile_data', _libname))
在文档中,它说 "import soundfile" 是正确的导入方式,但我也试过
import pysoundfile
只得到了
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pysoundfile'
有谁知道为什么会这样吗?顺便说一句,我在 MacOS 上 运行 宁此。
阅读重大更改部分 here
我们在 0.7 中将导入名称从 import pysoundfile 更改为 import soundfile。
解决方法
pip install SoundFile
- 由于使用
librosa
库,我遇到了这个错误,该库使用 SoundFile
OSError
似乎是因为 SoundFile
是旧版本。
- GitHub-librosa: Cannot load when importing librosas #1117
librosa
似乎可以安装,并且应该与 pysoundfile
一起使用,但根据我的经验,它没有。
- 移除
pysoundfile
:conda remove pysoundfile --force-remove
SoundFile
不适用于 conda
安装。
- 在我的例子中,我已经完成了
pip uninstall SoundFile
,然后导致无法找到包的导入错误。
- 然后我做了
pip install SoundFile
,它安装了更新的版本并解决了错误。
- 这适用于 Windows 10 with Anaconda,
python 3.8.11
,SoundFile 0.10.3.post1
,librosa 0.8.1
我正在使用 Anaconda 并且正在尝试导入 soundfile/pysoundfile。
我通过 运行ning
安装了这个包 conda install -c conda-forge pysoundfile
我认为它成功了,因为当我 运行
conda list
它出现了:
pyopenssl 17.2.0 py36h5d7bf08_0
pyparsing 2.2.0 py36hb281f35_0
pyqt 5.6.0 py36he5c6137_6
pysocks 1.6.7 py36hfa33cec_1
pysoundfile 0.10.1 py_0 conda-forge
pytables 3.4.2 py36hfbd7ab0_2
pytest 3.2.1 py36h9963153_1
为了确保我 运行宁 "right" python,我试过 运行宁
which python
我得到
/anaconda3/bin/python
但是当我打开 python 并尝试 运行ning
import soundfile
我得到以下信息:
Traceback (most recent call last):
File "/anaconda3/lib/python3.6/site-packages/soundfile.py", line 142, in <module>
raise OSError('sndfile library not found')
OSError: sndfile library not found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/anaconda3/lib/python3.6/site-packages/soundfile.py", line 163, in <module>
_path, '_soundfile_data', _libname))
OSError: cannot load library '/anaconda3/lib/python3.6/site-packages/_soundfile_data/libsndfile.dylib': dlopen(/anaconda3/lib/python3.6/site-packages/_soundfile_data/libsndfile.dylib, 2): image not found
出于好奇,我用文本编辑器打开 soundfile.py 文件,看看第 142 行是什么样子,它看起来像这样:
try:
_libname = _find_library('sndfile')
if _libname is None:
raise OSError('sndfile library not found') # <---- line 142
_snd = _ffi.dlopen(_libname)
except OSError:
if _sys.platform == 'darwin':
_libname = 'libsndfile.dylib'
elif _sys.platform == 'win32':
from platform import architecture as _architecture
_libname = 'libsndfile' + _architecture()[0] + '.dll'
else:
raise
# hack for packaging tools like cx_Freeze, which
# compress all scripts into a zip file
# which causes __file__ to be inside this zip file
_path = _os.path.dirname(_os.path.abspath(__file__))
while not _os.path.isdir(_path):
_path = _os.path.abspath(_os.path.join(_path, '..'))
_snd = _ffi.dlopen(_os.path.join(
_path, '_soundfile_data', _libname))
在文档中,它说 "import soundfile" 是正确的导入方式,但我也试过
import pysoundfile
只得到了
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pysoundfile'
有谁知道为什么会这样吗?顺便说一句,我在 MacOS 上 运行 宁此。
阅读重大更改部分 here
我们在 0.7 中将导入名称从 import pysoundfile 更改为 import soundfile。
解决方法
pip install SoundFile
- 由于使用
librosa
库,我遇到了这个错误,该库使用SoundFile
OSError
似乎是因为SoundFile
是旧版本。- GitHub-librosa: Cannot load when importing librosas #1117
librosa
似乎可以安装,并且应该与pysoundfile
一起使用,但根据我的经验,它没有。- 移除
pysoundfile
:conda remove pysoundfile --force-remove
- 移除
SoundFile
不适用于conda
安装。- 在我的例子中,我已经完成了
pip uninstall SoundFile
,然后导致无法找到包的导入错误。 - 然后我做了
pip install SoundFile
,它安装了更新的版本并解决了错误。 - 这适用于 Windows 10 with Anaconda,
python 3.8.11
,SoundFile 0.10.3.post1
,librosa 0.8.1