Не могу импортировать звуковой файл - PullRequest
0 голосов
/ 21 октября 2018

Я использую 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, кстати.

1 Ответ

0 голосов
/ 21 октября 2018

Прочитайте раздел Breaking Changes здесь

мы изменили имя импорта с импорта pysoundfile на импорт звукового файла в 0.7.

обходной путь

pip install SoundFile

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...