Comment importer un module dans le répertoire des notebook de jupyter dans les notebooks des répertoires inférieurs? [dupliquer]
Cette question a déjà une réponse ici:
j'ai utilisé le carnet jupyter pour l'analyse des données depuis un certain temps. Je voudrais développer un module dans mon répertoire de carnet jupyter et être pouvoir importer ce nouveau module dans les cahiers. Mon jupyter fichier notebook répertoire peut être représenté comme suit;
Jupyter notebooks
notebook1.ipynb
new_module
__init__.py
newfunction.py
currentnotebooks
notebook2.ipynb
Quand utiliser import new_module
dans notebook1.ipynb cela fonctionne cependant quand j'essaie la même commande dans notebook2.ipynb j'ai le ImportError: No module named 'new_module'
. Les deux solutions évidentes sont A) déplacer new_module dans le répertoire currentnotebooks ou B) déplacer notebook2.ipynb au même niveau que new_module. Je ne veux pas déconner avec la structure du fichier. Est-ce possible?
1 réponses
Vous devez vous assurer que le répertoire parent de new_module
est sur votre chemin python. Pour un carnet qui est un niveau en dessous de new_module
, ce code fera l'affaire:
import os
import sys
nb_dir = os.path.split(os.getcwd())[0]
if nb_dir not in sys.path:
sys.path.append(nb_dir)
si vous êtes plus bas dans la hiérarchie des répertoires, vous devrez ajuster la façon nb_dir
est réglé, mais c'est tout. Vous devez vous exécuter ce code pour un ordinateur portable dans Jupyter notebooks
, puisqu'il ajouterait le parent de ce répertoire au chemin python, qui est probablement indésirable.
la raison pour laquelle l'importation fonctionne notebook1
c'est que sys.chemin d'accès contient des ''
(la chaîne vide), qui est le répertoire courant de l'interpréteur en cours d'exécution (noyau, dans ce cas). Une recherche google explain python path
trouve plusieurs bonnes explications sur l'utilisation de python PYTHONPATH
(alias sys.path
).