Я использую Anaconda и пытаюсь импортировать звуковой файл / pysoundfile.
Я установил пакет, запустив
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
Чтобы убедиться, что я запускаю «правильный» питон, я попытался запустить
which python
, и я получил
/anaconda3/bin/python
Но когда я открываю Python и пытаюсь запустить
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 pysoundfile
и получил только
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pysoundfile'
* 1032Есть ли кто-нибудь, кто знает, почему это происходит?Я запускаю это на MacOS, кстати.