Dieses Problem tritt auf, wie der IPython-Befehlszeileninterpreter Ihren aktuellen Pfad verwendet und wie ein separater Prozess (sei es ein IPython-Notizbuch, ein externer Prozess usw.). IPython sucht nach zu importierenden Modulen, die sich nicht nur in Ihrem sys.path, sondern auch in Ihrem aktuellen Arbeitsverzeichnis befinden. Wenn Sie einen Interpreter über die Befehlszeile starten, ist das aktuelle Verzeichnis, in dem Sie arbeiten, dasselbe, in dem Sie ipython gestartet haben. Wenn Sie ausführen
import os
os.getcwd()
Sie werden sehen, dass dies wahr ist.
Angenommen, Sie verwenden ein ipython-Notizbuch, führen es aus os.getcwd()
und Ihr aktuelles Arbeitsverzeichnis ist stattdessen der Ordner, in dem Sie das Notizbuch angewiesen haben, in Ihrer Datei ipython_notebook_config.py zu arbeiten (normalerweise unter Verwendung der c.NotebookManager.notebook_dir
Einstellung).
Die Lösung besteht darin, dem Python-Interpreter den Pfad zu Ihrem Modul bereitzustellen. Die einfachste Lösung besteht darin, diesen Pfad an Ihre sys.path-Liste anzuhängen. Versuchen Sie zunächst in Ihrem Notizbuch:
import sys
sys.path.append('my/path/to/module/folder')
import module-of-interest
Wenn dies nicht funktioniert, haben Sie ein anderes Problem in den Händen, das nicht mit dem Pfad zum Import zusammenhängt, und Sie sollten weitere Informationen zu Ihrem Problem bereitstellen.
Der bessere (und dauerhaftere) Weg, dies zu lösen, besteht darin, Ihren PYTHONPATH festzulegen , der dem Interpreter zusätzliche Verzeichnisse zur Verfügung stellt, in denen nach Python-Paketen / Modulen gesucht wird. Das Bearbeiten oder Festlegen des PYTHONPATH als globale Variable ist os-abhängig und wird hier für Unix oder Windows ausführlich erläutert .