You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter镜像Docker容器执行pip install -e后仍无法导入src模块

问题根因

报错和apt依赖没有任何关系,核心是两个Dockerfile配置错误:

  1. 路径混乱,WORKDIR设置位置错误
    jupyter/scipy-notebook基础镜像的默认工作目录是/home/jovyan,你把WORKDIR /work放在Dockerfile最末尾,前面所有命令执行时的工作目录都不是/work:
    • 第一条COPY . ./work是把项目文件复制到了/home/jovyan/work,并非根目录下的/work
    • 后续COPY setup.py /work、COPY src /work/src是把零散文件复制到根目录的/work路径下,和前面复制的文件完全不在同一个位置
    • 执行RUN pip install -e .时,当前目录是/home/jovyan,找不到对应位置的setup.py和完整项目结构,安装完全无效
    • 尝试添加CMD pip install -e .不生效,是因为CMD会覆盖基础镜像默认的Jupyter启动命令,导致容器不会正常启动Jupyter服务,且命令执行时的工作目录也不匹配。
  2. 文件复制顺序错误,安装时项目结构不完整
    就算路径配置正确,你是先复制setup.py就执行pip install -e .,之后才复制src源码目录。执行可编辑安装时setuptools.find_packages()扫描不到src包,无法生成正确的包链接,后续再复制源码进去也不会触发重新安装,导入自然报错。你手动进入容器在完整的项目目录下重新执行安装就恢复正常,刚好印证了这个问题。
  3. 额外语法问题:你贴出的setup.py中long_description行末尾缺少逗号,会触发Python语法错误,如果本地文件确实漏写需要补上。
修正方案

1. 调整Dockerfile配置

提前声明工作目录,统一所有文件的复制路径,调整复制顺序保证执行pip安装时项目文件完整,同时利用Docker层缓存提升构建效率,修正后的Dockerfile如下:

FROM jupyter/scipy-notebook

# 提前设置工作目录,后续所有命令、文件复制都基于这个路径执行
WORKDIR /work

# 先复制依赖声明文件,依赖不变时构建会直接用缓存,不需要重复安装
COPY requirements.txt ./
RUN pip install --upgrade pip && pip install -r requirements.txt

# 复制全部剩余项目文件,保证setup.py、src目录、配置文件等都在/work目录下
COPY . .

# 此时项目结构完整,执行可编辑模式安装
RUN pip install -e .

2. 修复setup.py语法错误

给long_description参数末尾补逗号,修正后对应代码片段:

setup(
    name="almond_analysis",
    version="0.0.1",
    description = "Almond analysis",
    long_description="Analysing yield with Python.",
    author= "George N",
    packages=find_packages(),
    install_requires=requirements,
    classifiers=[
        "Programming Language :: Python :: 3"
    ],
    python_requires =">= 3.0.*",
)

3. 重新构建验证

如果之前构建过错误版本的镜像,重新构建时加上--no-cache参数规避旧缓存层的影响:

docker build --no-cache -t almond-analysis .

注意:不要在Dockerfile末尾额外加CMD pip install -e .这类命令,会覆盖基础镜像默认的Jupyter启动逻辑,导致容器无法正常提供Notebook服务。

构建完成后启动容器,不需要在容器内手动执行任何安装命令,直接在data_exploration.ipynb中执行import src即可正常导入。

内容的提问来源于stack exchange,提问作者JohnK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:18:27