我一直在尝试在其中存放python模块的文件夹中添加一个,到目前为止,我还无法通过AWS终端执行此操作。包含.py
文件的文件夹位于主SageMaker
文件夹内,因此我正在尝试(我也尝试过SageMaker/zds
,它是保存模块的文件夹):
export PYTHONPATH="${PYTHONPATH}:SageMaker/"
在使用PYTHONPATH
通过终端打印python -c "import sys; print('\n'.join(sys.path))"
的目录之后,我确实确实将我的新路径包括在PYTHONPATH
中。但是,当我尝试从任何笔记本(使用from zds.module import *
或from module import *
)导入任何模块时,都会收到该模块不存在的错误。如果我直接从笔记本中的PYTHONPATH
打印路径,则不再在列表中看到以前添加的路径。
我在这里错过了一些基本的知识吗,还是无法在AWS SageMaker中向PYTHONPATH
添加路径?现在,我基本上必须在每个笔记本中使用import sys, os
sys.path.insert(0, os.path.abspath('..'))
来解决问题。
答案 0 :(得分:0)
感谢您使用Amazon SageMaker!
从https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html
复制Amazon SageMaker笔记本实例使用conda环境为Jupyter笔记本实现不同的内核。如果要安装一个或多个笔记本内核可用的软件包,请用conda环境命令将命令安装在命令中,以激活包含要安装软件包的内核的conda环境。 例如,如果您只想在python3环境中安装软件包,请使用以下代码:
# This will affect only the Jupyter kernel called "conda_python3".
source activate python3
# Replace myPackage with the name of the package you want to install.
pip install myPackage
# You can also perform "conda install" here as well.
source deactivate
如果以上述建议的方式进行安装,则应该能够从正在使用的Notebook相应内核中导入软件包。让我们知道是否有帮助。
答案 1 :(得分:0)
将其添加到lifecycle script对我有用
sudo -i <<'EOF'
touch /etc/profile.d/jupyter-env.sh
echo export PYTHONPATH="$PYTHONPATH:/home/ec2-user/SageMaker/repo-name/src" >> /etc/profile.d/jupyter-env.sh
EOF