我想在Sagemaker的jupyter笔记本中导入自定义模块。尝试从Untitled1.ipynb导入,我尝试了两种不同的结构。第一个是:
在“包文件夹”中有文件“ cross_validation.py”和“ init .py”。尝试了以下命令:
from package import cross_validation
import package.cross_validation
第二个是
我已经编码了import cross_validation
在两种情况下,导入时都完全没有错误,但是由于收到错误名称Class_X is not defined
我还重新启动了笔记本电脑,以防万一它仍然无法正常工作。我该怎么做?
答案 0 :(得分:1)
您可以将__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!
答案 1 :(得分:1)
如果使用SageMaker Studio,则需要注意路径。
在SageMaker Studio的笔记本中:
?- replace(put(hi,table,aside(hi(dont,replace),hi)),X).
X = put(bye, table, aside(hi(dont, replace), bye))
,您将看到以下行:
!df -h
127.0.0.1:/200005 8.0E 1.3G 8.0E 1% /root
将是:
!pwd
它不同于 bash终端:
在bash终端中:
/root
因此,外部文件路径“ / home / sagemaker-user”将被映射到SageMaker Studio下笔记本中的“ / root”。
因此,模块路径将更改:
df -h
127.0.0.1:/200005 8.0E 1.4G 8.0E 1% /home/sagemaker-user
pwd
/home/sagemaker-user
详细信息可以参考此link
答案 2 :(得分:0)
如果还需要从父目录导入文件,则可以这样添加路径:
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环境中一样