2017-01-03 4 views
3

Je reconnais que c'est une erreur d'installation de ma part, et je suis désolé de poser cette question sans intérêt et sans conséquence à vos pieds, mais pour la vie de moi je n'arrive pas à comprendre ce qui ne va pas et je n'ai plus d'idées. J'espère que quelqu'un sera en mesure de souligner rapidement l'évidence.Python line_profiler ne trouve pas le module

J'essaye de profiler un script python (en utilisant le line_profiler de Kern), et le script doit charger le module netCDF4. J'ai installé à la fois line_profiler et netCDF4 avec pip. Les deux sont signalés comme présents et mis à jour lorsque je file la pip pour la liste des paquets installés.

Sans utiliser le profileur, mon script s'exécute sans problèmes, ce qui signifie que le module netCDF4 est chargé correctement. Cependant, si je lance 'kernprof -l -v myscript.py' du répertoire "MyScript", je reçois l'erreur suivante:

Traceback (most recent call last): 
    File "/usr/local/bin/kernprof", line 9, in <module> 
    load_entry_point('line-profiler==1.0', 'console_scripts', 'kernprof')() 
    File "Library/Python/2.7/site-packages/kernprof.py", line 221, in main 
    execfile(script_file, ns, ns) 
    File "myscript.py", line 5, in <module> 
    from netCDF4 import Dataset 
ImportError: No module named netCDF4 

Je courais Python d'une installation/opt/local/bin/python, qui est listé en premier dans mon PATH. Donc, dans tous les cas, si la version Python par défaut que j'ai définie est la même que celle qui apparaît en premier dans mon PATH, et que cette version par défaut est capable d'accéder au module netCDF4, pourquoi line_profiler?

+1

pouvez-vous importer un autre module standard 'import os' puis' imprimer (os .__ fichier __) 'pour voir où se trouve la bibliothèque standard lors de l'exécution du profileur? –

+0

print (os._file_) donne: 'AttributeError: l'objet 'module' n'a pas d'attribut '_file_'' – Nordlendingen

+0

ok, mauvais choix, module intégré :): try' import csv; print (csv .__ fichier __) '. Aussi: 'import sys; print (sys.executable) '. Les deux résultats seraient utiles. –

Répondre

2

kernprof a shebang qui redirige vers l'installation python par défaut qui ne possède pas tous les modules requis.

Vous pouvez forcer l'utilisation de l'installation en faisant votre python « complet »:

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/‌​Resources/Python.app‌​/Contents/MacOS/Pyth‌​on /usr/local/bin/kernprof -l -v myscript.py 

Alors tralala est ignoré, et que vous exécutez le profileur avec la version de Python contenant tous les paquets nécessaires.

+0

Je reçois alors l'erreur "Impossible d'ouvrir le fichier 'kernprof.py': Aucun fichier ou répertoire". Mais vous m'avez expliqué que kernprof est clairement au mauvais endroit et que j'ai un problème avec les installations Python ... alors au moins je sais maintenant sur quoi travailler. Merci! – Nordlendingen

+0

Désolé j'ai oublié le chemin complet 'kernprof' car le préfixe python n'utilise pas le PATH mais PYTHONPATH. Devrait travailler avec mon edit. –

+0

En effet! Merci encore!! – Nordlendingen