2016-08-21 5 views
0

Après de nombreux problèmes, j'ai installé Librosa (https://github.com/librosa/librosa) sur Linux Mint 18 Mate x64. Quand je veux exécuter exemple de script, par exemple: http://librosa.github.io/librosa/generated/librosa.feature.tempogram.html#librosa.feature.tempogram, il se bloque avec l'erreur « Segmentation Fault »:"Défaut de segmentation" dans l'exemple d'exécution matplotlib Librosa script

$ python librosa-feature-tempogram-1.py 
/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_qt5.py:140: Warning: g_main_context_push_thread_default: assertion 'acquired_context' failed 
    qApp = QtWidgets.QApplication([str(" ")]) 
Segmentation fault 

J'ai essayé de le déboguer ligne par ligne et il est le résultat:

$ python 
Python 2.7.12 (default, Jul 1 2016, 15:12:24) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import librosa 

>>> # Visualize an STFT power spectrum 
... 
>>> import matplotlib.pyplot as plt 
>>> y, sr = librosa.load(librosa.util.example_audio_file()) 

>>> plt.figure(figsize=(12, 8)) 
/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_qt5.py:140: Warning: g_main_context_push_thread_default: assertion 'acquired_context' failed 
    qApp = QtWidgets.QApplication([str(" ")]) 
Segmentation fault 

Il existe probablement un problème avec la bibliothèque matplotlib et Qt (5.7.0). De plus, je me souviens que j'avais beaucoup de problèmes lors de l'installation de Librosa, y compris matplotlib, donc ça pourrait être un problème d'installation. Cependant, je ne sais pas comment le résoudre. J'espère que quelqu'un aura des indices utiles pour moi.

Répondre

0

Enfin, je l'ai résolu ce problème en installant ces paquets: sudo apt-get install tk-dev libpng-dev libffi-dev dvipng texlive-latex-base et réinstallant matplotlib utilisant pip. J'ai également changé de fond dans matplotlib sur TkAgg. Il y a un début de code avec des instructions d'importation:

import librosa 
import matplotlib 
matplotlib.use('TkAgg') 
import matplotlib.pyplot as plt 

Maintenant, cela fonctionne parfaitement.