【发布时间】:2022-10-21 21:01:07
【问题描述】:
我正在使用以下 Dockerfile 创建一个 docker 映像:
FROM python:3.7
RUN apt-get update && pip install sagemaker boto3 numpy sagemaker-training
# Copies the training code inside the container
COPY cv.py /opt/ml/code/train.py
COPY scikit_learn_iris.py /opt/ml/code/scikit_learn_iris.py
# Defines train.py as script entrypoint
ENV SAGEMAKER_PROGRAM train.py
# Install custom packages specified in requirements.txts
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
ENV PYTHONPATH "/usr/local/lib/python3.7/site-packages"
在需求文件中,我添加了lightgbm 库,它成功地将其安装在 docker 映像中。当 sagemaker 运行时开始运行 scikit_learn_iris.py 导致它无法导入 lightgbm: ModuleNotFoundError: No module named 'lightgbm'。我在 scikit_learn_iris.py 脚本的开头打印 sys 路径和 PYTHONPATH,它显示以下结果:
sys.path = ['/opt/ml/code', '/opt/ml/code', '/miniconda3/bin', '/miniconda3/lib/python37.zip', '/miniconda3/lib/python3.7', '/miniconda3/lib/python3.7/lib-dynload', '/miniconda3/lib/python3.7/site-packages']
PYTHONPATH = ['/opt/ml/code', '/miniconda3/bin', '/miniconda3/lib/python37.zip', '/miniconda3/lib/python3.7', '/miniconda3/lib/python3.7/lib-dynload', '/miniconda3/lib/python3.7/site-packages']
为什么脚本使用/miniconda3/... 来查找库?即使我在 Dockerfile 中设置 PYTHONPATH 环境变量也很难?我如何让它理解寻找正确的路径?!当我检查时(使用docker run -it IMAGE_NAME bash),这条路径/miniconda3/ 甚至不存在于docker 映像中
【问题讨论】:
-
您是否尝试过在安装
sagemaker-training之前设置 PYTHONPATH ENV ?是否有理由需要设置 PYTHONPATH ENV?不设置时有什么问题吗?
标签: python docker pip amazon-sagemaker