在 Amazon Sagemaker Jupyter notebook 中导入自定义模块
Import custom modules in Amazon Sagemaker Jupyter notebook
我想在 Sagemaker 的 jupyter notebook 中导入自定义模块。尝试从 Untitled1.ipynb 导入 我尝试了两种不同的结构。第一个是:
在 "package folder" 中有文件 "cross_validation.py" 和“init.py”。已尝试以下命令:
from package import cross_validation
import package.cross_validation
第二个是
并且我已经编码 import cross_validation
在这两种情况下,我在导入时都没有收到任何错误,但我无法在模块内使用 class,因为我收到错误名称 Class_X is not defined
我也重启了笔记本,以防万一,还是不行。我怎么做到的?
您可以将 __init__.py
文件添加到 package
目录,使其成为 Python 包。然后你将从你的 Jupyter notebook
中的包中导入模块
/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!
如果您还需要从父目录导入文件,您可以这样添加到路径中:
import os
import sys
module_path = "/home/ec2-user/SageMaker/{module_name}"
if module_path not in sys.path:
sys.path.append(module_path)
然后您可以像在普通python环境中一样从项目的根目录导入
如果使用SageMaker Studio,需要注意路径。
在 SageMaker Studio 的笔记本中:
!df -h
,您将看到以下行:
127.0.0.1:/200005 8.0E 1.3G 8.0E 1% /root
而 !pwd
将是:
/root
不同于bash终端:
在bash终端中:
df -h
127.0.0.1:/200005 8.0E 1.4G 8.0E 1% /home/sagemaker-user
pwd
/home/sagemaker-user
因此,外部文件路径“/home/sagemaker-user”将映射到您在 SageMaker Studio 下的笔记本中的“/root”。
因此,模块路径将发生变化:
import sys
sys.path.append('/root/module_name')
详细信息可以参考这个link
我想在 Sagemaker 的 jupyter notebook 中导入自定义模块。尝试从 Untitled1.ipynb 导入 我尝试了两种不同的结构。第一个是:
在 "package folder" 中有文件 "cross_validation.py" 和“init.py”。已尝试以下命令:
from package import cross_validation
import package.cross_validation
第二个是
并且我已经编码 import cross_validation
在这两种情况下,我在导入时都没有收到任何错误,但我无法在模块内使用 class,因为我收到错误名称 Class_X is not defined
我也重启了笔记本,以防万一,还是不行。我怎么做到的?
您可以将 __init__.py
文件添加到 package
目录,使其成为 Python 包。然后你将从你的 Jupyter notebook
/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!
如果您还需要从父目录导入文件,您可以这样添加到路径中:
import os
import sys
module_path = "/home/ec2-user/SageMaker/{module_name}"
if module_path not in sys.path:
sys.path.append(module_path)
然后您可以像在普通python环境中一样从项目的根目录导入
如果使用SageMaker Studio,需要注意路径。
在 SageMaker Studio 的笔记本中:
!df -h
,您将看到以下行:
127.0.0.1:/200005 8.0E 1.3G 8.0E 1% /root
而 !pwd
将是:
/root
不同于bash终端:
在bash终端中:
df -h
127.0.0.1:/200005 8.0E 1.4G 8.0E 1% /home/sagemaker-user
pwd
/home/sagemaker-user
因此,外部文件路径“/home/sagemaker-user”将映射到您在 SageMaker Studio 下的笔记本中的“/root”。
因此,模块路径将发生变化:
import sys
sys.path.append('/root/module_name')
详细信息可以参考这个link