Импорт пользовательских модулей в блокнот Amazon Sagemaker Jupyter

Я хочу импортировать пользовательский модуль в свой блокнот Jupyter в Sagemaker. Пытаясь импортировать из Untitled1.ipynb, я пробовал две разные структуры. Первый:

Импорт пользовательских модулей в блокнот Amazon Sagemaker Jupyter

Внутри «папки пакета» находились файлы «cross_validation.py» и «в этом.py». Были опробованы следующие команды:

from package import cross_validation
import package.cross_validation

Второй

Импорт пользовательских модулей в блокнот Amazon Sagemaker Jupyter

и я закодировал import cross_validation

В обоих случаях я не получаю никакой ошибки при импорте, но я не могу использовать класс внутри модуля, потому что я получаю имя ошибки Class_X is not defined

Я также перезагрузил ноутбук на всякий случай, и он все еще не работает. Как я мог это сделать?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
0
4 594
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете добавить файл __init__.py в свой каталог package, чтобы сделать его пакетом Python. Затем вы будете импортировать модули из пакета в свой блокнот Jupyter.

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

Содержимое Notebook.ipynb

from mypackage.mymodule import SomeClass, SomeOtherClass

Дополнительные сведения см. в статье https://docs.python.org/3/tutorial/modules.html#packages.

Благодарим за использование Amazon SageMaker!

В sagemaker с ядром sparkmagic это не работает.

yardstick17 28.04.2021 14:44

Нельзя ли импортировать пользовательские модули в ядро ​​sparkmagic?

Ajayv 11.12.2021 11:37

Если вам также нужно импортировать файлы из родительских каталогов, вы можете добавить к пути как таковой:

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

Затем вы можете импортировать, как если бы вы были в нормальная среда питона из корня вашего проекта.

Если вы используете SageMaker Studio, вам нужно позаботиться о пути.

В блокнот SageMaker Studio:

!df -h, Вы увидите строку:

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

А !pwd будет:

/root

Он отличается от Баш-терминал:

В баш-терминале:

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

pwd
/home/sagemaker-user

Таким образом, внешний путь к файлу «/home/sagemaker-user» будет сопоставлен с «/root» в ваших блокнотах в SageMaker Studio.

Итак, путь к модулю изменится:

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

Подробная информация может ссылаться на этот связь

Другие вопросы по теме