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

Docker部署多容器应用时Python本地模块导入失败求助

Fixing "ModuleNotFoundError: No module named 'filter.filter'" in Dockerized Python Service

Hey Luiscri, no worries at all—this is a super common gotcha when moving local Python projects into Docker containers, so you’re not alone here! Let’s break down what’s going wrong and get your orchestrator service up and running.

What’s the Root Cause?

When you run your code locally, your Python interpreter automatically includes your orchestrator/ working directory in its module search path (sys.path). That’s why it can find the filter package (with its required __init__.py file) without extra setup.

In Docker, though, two issues usually trigger this error:

  • Your filter directory (and its critical __init__.py) isn’t being copied correctly into the container.
  • The container’s Python interpreter doesn’t have the directory holding the filter package in its sys.path.

Step-by-Step Fixes

1. Fix Your Dockerfile’s Copy Commands

First, ensure your Dockerfile copies the entire filter package (including __init__.py) into the container.

If your Dockerfile lives inside the orchestrator/ directory, use these copy commands:

FROM python:3.6
WORKDIR /app

# Copy requirements first for caching efficiency
COPY requirements.txt .
RUN pip install -r requirements.txt

# Copy all files and subdirectories in orchestrator/ to /app/
COPY . .

CMD ["python", "my_sched.py"]

If your Dockerfile is in the project root (one level above orchestrator/), adjust the copy command to target the orchestrator folder directly:

COPY orchestrator/ /app/

Also, double-check your .dockerignore file—make sure it’s not accidentally excluding __init__.py or the filter/ directory.

2. Explicitly Add the Working Directory to Python’s Path

If the file structure looks correct in the container but Python still can’t find the module, add the app directory to sys.path at the top of your tasks.py or my_sched.py:

import sys
from pathlib import Path

# Add the current script's directory to Python's module search path
sys.path.append(str(Path(__file__).parent))

# Now your import should work as expected
from filter.filter import filter_spam

3. Debug the Container’s File Structure

To confirm files are being copied correctly, temporarily override the Dockerfile command to drop into a bash shell:

CMD ["bash"]

Run the container with:

docker-compose run orchestrator

Inside the container, run these commands to inspect the directory structure:

# List all files in the app directory
ls /app

# Verify the filter package has all required files
ls /app/filter

If the filter directory is missing or lacks __init__.py, your copy command is the culprit.

4. Confirm Python Version Consistency

Double-check that your local Python version matches the container’s (you’re using python:3.6, so run python --version locally). Rarely, minor version differences can cause path-handling quirks.

Wrap-Up

9 times out of 10, this issue comes down to missing files in the container or Python not looking in the right directory. Following these steps should get your orchestrator service running smoothly in Docker.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:14:31