2
votes

Importer des modules personnalisés dans le notebook Amazon Sagemaker Jupyter

Je souhaite importer un module personnalisé dans mon notebook jupyter dans Sagemaker. En essayant l'importation depuis Untitled1.ipynb, j'ai essayé deux structures différentes. Le premier est:

 entrez la description de l'image ici

Dans le" dossier du package "se trouvaient les fichiers" cross_validation.py "et" init strong > .py ". Les commandes suivantes ont été essayées:

from package import cross_validation
import package.cross_validation

La seconde est

 emak

et J'ai codé import cross_validation

Dans les deux cas, je n'obtiens aucune erreur lors de l'importation, mais je ne peux pas utiliser la classe à l'intérieur du module car je reçois le nom d'erreur Class_X n'est pas défini

J'ai aussi redémarré le notebook, juste au cas où il ne fonctionnerait toujours pas. Comment pourrais-je y arriver?


0 commentaires

3 Réponses :


1
votes

Vous pouvez ajouter un fichier __init__.py à votre répertoire package pour en faire un package Python. Ensuite, vous importerez les modules du package à l'intérieur de votre notebook Jupyter

from mypackage.mymodule import SomeClass, SomeOtherClass

Contenu de Notebook.ipynb

/home/ec2-user/SageMaker
    -- Notebook.ipynb 
    -- mypackage
        -- __init__.py
        -- mymodule.py

Pour plus de détails, voir https://docs.python.org/3/tutorial/modules.html# packages

Merci d'utiliser Amazon SageMaker!


0 commentaires

2
votes

Si vous avez également besoin d'importer des fichiers à partir de répertoires parents, vous pouvez ajouter au chemin comme tel:

import os
import sys
module_path = "/home/ec2-user/SageMaker/{module_name}"
if module_path not in sys.path:
    sys.path.append(module_path)

Ensuite, vous pouvez importer comme si vous étiez dans un environnement python normal à partir de la racine de votre projet


0 commentaires

1
votes

Si vous utilisez SageMaker Studio, vous devez faire attention au chemin.

Dans le carnet de SageMaker Studio :

! df -h , vous verrez la ligne:

import sys
sys.path.append('/root/module_name')

Et ! pwd sera:

/ root

Il est différent du terminal bash :

Dans le terminal bash:

df -h
127.0.0.1:/200005  8.0E  1.4G  8.0E   1% /home/sagemaker-user

pwd
/home/sagemaker-user

Ainsi, le chemin du fichier extérieur "/ home / sagemaker-user" sera mappé dans "/ root" dans vos notebooks sous SageMaker Studio.

Ainsi, le chemin du module va changer:

127.0.0.1:/200005  8.0E  1.3G  8.0E   1% /root

Les informations détaillées peuvent refaire ceci lien


0 commentaires