簡體   English   中英

Python 鏈接到錯誤的庫文件夾 - 未找到 sndfile 庫

[英]Python linking to wrong library folder - sndfile library not found

嘗試將 librosa 庫導入我的 python 項目並在全局 python 環境中運行時出現以下錯誤:

回溯(最近調用最后一次):文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/soundfile.py”,第 142 行,在 raise OSError('sndfile library not found ') OSError: 找不到 sndfile 庫

在處理上述異常的過程中,又出現了一個異常:

追溯(最近調用最后):文件“Bloompipe/Synthesis_Module/bloompipe_synthesis/testSynthesis.py”,第 6 行,在 from LSD.lucidsonicdreams import LucidSonicDream 文件“Bloompipe/Synthesis_Module/bloompipe_synthesis/LSD/lucidsonicdreams/ init .py”,第 1 行,在 from.main 導入 * 文件“Bloompipe/Synthesis_Module/bloompipe_synthesis/LSD/lucidsonicdreams/main.py”,第 15 行,在 from.AudioAnalyse 導入 * 文件“Bloompipe/Synthesis_Module/bloompipe_synthesis/LSD/lucidsonicdreams/AudioAnalyse.py”,第 3 行,在導入librosa.display文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/librosa/init.py”,第 209 行,在 from. 導入核心文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/librosa/core/init.py”,第 6 行,在from.audio import * # pylint: disable=通配符導入文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/librosa/core/audio.py”,第 8 行,在 import soundfile as sf File“/Library/ Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/soundfile.py”,第 162 行,在 _snd = _ffi.dlopen(_os.path.join( OSError: cannot load library '/Library/ Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/_soundfile_data/libsndfile.dylib': dlopen(/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site- packages/_soundfile_data/libsndfile.dylib, 0x0002): tried: '/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/_soundfile_data/libsndfile.dylib'(沒有這樣的文件)

進程結束,退出代碼為 1

我用自制軟件安裝了 libsndfile 庫,也為虛擬 conda 環境安裝了庫。 嘗試在 conda 環境中運行該程序時會產生以下錯誤:

追溯(最近一次通話最后一次):文件“.conda/envs/bloompipe_synthesis/lib/python3.9/site-packages/soundfile.py”,第 143 行,在 _snd = _ffi.dlopen(_libname) OSError: cannot load library ' .conda/envs/bloompipe_synthesis/bin/../lib/libsndfile.dylib':dlopen(.conda/envs/bloompipe_synthesis/bin/../lib/libsndfile.dylib,0x0002):庫未加載:@rpath/libvorbis .0.4.9.dylib 引用自:.conda/envs/bloompipe_synthesis/lib/libsndfile.1.0.31.dylib 原因:試過:'.conda/envs/bloompipe_synthesis/lib/libvorbis.0.4.9.dylib'(沒有這樣的文件),'.conda/envs/bloompipe_synthesis/lib/libvorbis.0.4.9.dylib'(沒有這樣的文件),'.conda/envs/bloompipe_synthesis/lib/libvorbis.0.4.9.dylib'(沒有這樣的文件) ,'.conda/envs/bloompipe_synthesis/lib/libvorbis.0.4.9.dylib'(沒有這樣的文件),'.conda/envs/bloompipe_synthesis/lib/python3.9/site-packages/../../libvorbis .0.4.9.dylib'(沒有這樣的文件),'.conda/envs/bloompipe_synthesis/lib/libvorbis.0.4.9.dylib'(沒有這樣的文件),'.conda/envs/bloompipe_synthesis/bin/../庫/里 bvorbis.0.4.9.dylib'(沒有這樣的文件),'/usr/local/lib/libvorbis.0.4.9.dylib'(沒有這樣的文件),'/usr/lib/libvorbis.0.4.9.dylib' (沒有這樣的文件)

在處理上述異常的過程中,又出現了一個異常:

追溯(最近調用最后):文件“Bloompipe/Synthesis_Module/bloompipe_synthesis/testSynthesis.py”,第 6 行,在 from LSD.lucidsonicdreams import LucidSonicDream 文件“Bloompipe/Synthesis_Module/bloompipe_synthesis/LSD/lucidsonicdreams/ init .py”,第 1 行,在 from.main 導入 * 文件“Bloompipe/Synthesis_Module/bloompipe_synthesis/LSD/lucidsonicdreams/main.py”,第 15 行,在 from.AudioAnalyse 導入 * 文件“Bloompipe/Synthesis_Module/bloompipe_synthesis/LSD/lucidsonicdreams/AudioAnalyse.py”,第 3 行,在導入 librosa.display 文件“.conda/envs/bloompipe_synthesis/lib/python3.9/site-packages/librosa/ init.py ”,第 209 行,在 from 中。 導入核心文件“.conda/envs/bloompipe_synthesis/lib/python3.9/site-packages/librosa/core/ init.py ”,第 6 行,在 from.audio import * # pylint: disable=wildcard-import File 中。 conda/envs/bloompipe_synthesis/lib/python3.9/site-packages/librosa/core/audio.py”,第 8 行,在 import soundfile as sf File “.conda/envs/bloompipe_synthesis/lib/python3.9/site- packages/soundfile.py”,第 162 行,在 _snd = _ffi.dlopen(_os.path.join( OSError: cannot load library '.conda/envs/bloompipe_synthesis/lib/python3.9/site-packages/_soundfile_data/libsndfile. dylib':dlopen(.conda/envs/bloompipe_synthesis/lib/python3.9/site-packages/_soundfile_data/libsndfile.dylib,0x0002):試過:'.conda/envs/bloompipe_synthesis/lib/python3.9/site-packages /_soundfile_data/libsndfile.dylib'(沒有這樣的文件)

進程結束,退出代碼為 1

問題是,在這兩種情況下,它都在錯誤的目錄中尋找 .dylib 文件。 我的自制程序安裝在 /opt/homebrew/lib 中,其中包含文件 libsndfile.dylib 和 libsndfile.1.dylib 以及 libvorbis.dylib 文件。 當嘗試在全局 python 環境中運行時,它正在 /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/_soundfile_data/ 中尋找這些文件。

我的 conda 安裝在 /opt/anaconda3/lib 中,其中包含文件 libsndfile.dylib、libsndfile.1.0.31.dylib 和 libsndfile.1.dylib 以及 libvorbis.dylib 和 libvorbis.0.4.9.dylib 文件。 當嘗試在 conda python 環境中運行時,它會在 .conda/envs/bloompipe_synthesis/lib/python3.9/site-packages/_soundfile_data/ 中查找這些文件。

在這兩種情況下,當查看這些站點包目錄時,即使激活隱藏文件,_soundfile_data 文件夾也不存在。 我不知道為什么那不存在。

我嘗試執行:

  • 導出 CPATH=/opt/homebrew/include
  • 導出 LIBRARY_PATH=/opt/homebrew/lib
  • 導出 PYTHONPATH=/opt/homebrew/lib

在運行時將路徑包含到 python 路徑中然后我使用 import sys 和 print(sys.path) 打印路徑變量,這是我的全局 python 的 output:

['Bloompipe/Synthesis_Module/bloompipe_synthesis',

'Bloompipe/Synthesis_Module/bloompipe_synthesis',

'/Library/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9',

'/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload',

'/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages',

'選擇/自制軟件/lib']

對於我嘗試過的 conda 環境:

  • conda develop.conda/envs/bloompipe_synthesis/lib
  • conda 開發 /opt/homebrew/lib
  • conda 開發 /opt/anaconda3/lib

然后 sys.path output 是:

['Bloompipe/Synthesis_Module/bloompipe_synthesis',

'.conda/envs/bloompipe_synthesis/lib/python39.zip',

'.conda/envs/bloompipe_synthesis/lib/python3.9', '.conda/envs/bloompipe_synthesis/lib/python3.9/lib-dynload',

'.conda/envs/bloompipe_synthesis/lib/python3.9/site-packages',

'.conda/envs/bloompipe_synthesis/lib',

'/opt/自制軟件/lib',

'/opt/anaconda3/lib']

奇怪的是,python 在執行 librosa 導入時仍然沒有查看這些目錄。

最后,我嘗試通過將 sys.path.append("/opt/homebrew/lib") 放在 python 文件的開頭來手動添加自制程序安裝路徑。 它仍然會產生完全相同的錯誤。

所以我的問題是,為什么 _soundfile_data 目錄不存在於我的全局 python 和 conda 環境的站點包文件夾中,為什么它不包含 libsndfile 的 .dylib 文件?

其次,為什么:

  • 導出 LIBRARY_PATH=/opt/homebrew/lib
  • 導出 PYTHONPATH=/opt/homebrew/lib

打印 sys.path 內容時不會出現這些路徑嗎?

第三,為什么 python 在 conda 環境下找不到 libsndfile.dylib 文件,即使我使用 conda develop 命令將 libsndfile 的 homebrew 和 conda 安裝添加到 sys 路徑?

我的python3.9安裝在/usr/local/bin/python3.9,我的conda python3.9環境安裝在/.conda/envs/bloompipe_synthesis/bin/python

我在一台裝有 Mac OS Monterey 的新 Mac 上。

任何幫助是極大的贊賞!

據我所知,它只適用於 python 3.6 和 3.7(lucidsonicdreams),盡管我在 3.6 上沒有成功。

我必須通過 conda 創建虛擬環境並通過 Jupyter notebook 運行代碼。 conda install tensorflow==1.15 (不適用於更高版本),python== pip install lucidsonicdreams

確保模塊版本與您的 Nvidia CUDA 驅動程序一致,否則 lucidsonicdreams 將無法運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM