__file__ n’existe pas dans Jupyter Notebook

| | | | | | | | | | | | | | | | | | |

Je suis sur un serveur Jupyter Notebook (v4.2.2) avec Python 3.4 .2 et je souhaite utiliser le nom global __file__, car le notebook sera cloné à partir d'autres utilisateurs et dans une section, je dois exécuter :

def __init__( self, trainingSamplesFolder="samples", maskFolder="masks") : self.trainingSamplesFolder = self.__getAbsPath(trainingSamplesFolder) self.maskFolder = self.__getAbsPath(maskFolder) def __getAbsPath(self, path) : si os.path.isabs( path) : return path else : return os.path.join(os.path.dirname(__file__), path) 

Le __getAbsPath(self, path) vérifie si un paramètre path est un chemin relatif ou absolu et renvoie la version absolue de path. Ainsi, je peux utiliser le path renvoyé en toute sécurité plus tard.

Mais j'obtiens l'erreur

NameError : le nom "__file__" n'est pas défini

Je recherché cette erreur en ligne et j'ai trouvé la "solution" que je devrais mieux utiliser sys.argv[0], mais print(sys.argv[0]) renvoie

/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py

Mais l'emplacement correct du notebook doit être /home/ubuntu/notebooks/.

Merci pour la référence Comment puis-je obtenir le nom actuel du notebook IPython de Martijn Pieters (commentaires) la dernière réponse (non acceptée) convient parfaitement à mon nécessite :

print(os.getcwd())

/home/ubuntu/notebooks