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

Docker容器中自定义Python模块无法找到(含setup.py与entry_points)

容器化Python项目遇ModuleNotFoundError问题及解决

项目结构

|--Dockerfile
|--requirements.txt
|--setup.py
|--mydummyproject
|--|--__init__.py
|--|--__main__.py
|--|--dummy.py

各文件内容

dummy.py

包含简单打印函数:

import numpy as np
def return_output(*args):
    for a in args:
        print(f"Hello {a}")
    print("Phew!")
    print("We've got numpy:",np.__version__)

init.py

仅为形式文件,无实际代码。

main.py

实现基础命令行参数解析接口:

import argparse
from .dummy import return_output

def command_line_target():
    parser = argparse.ArgumentParser()
    parser.add_argument('-v','--value', nargs='+',default=["John","Jane"])
    args = parser.parse_args()
    return_output(*args.value)

原setup.py配置

from setuptools import setup

with open("requirements.txt", "r") as _f:
    install_reqs = _f.read().strip().split("\n")

setup(name="dummy",
      version="0.0.1",
      package_dir={"mydummyproject": "mydummyproject"},
      install_requires=install_reqs,
      python_requires=">=3.8",
      entry_points={
          'console_scripts': [
              'hello = mydummyproject.__main__:command_line_target'
          ]}
      )

问题描述

该项目在本地conda测试环境中可正常运行,但通过WSL和Docker Desktop完成容器化后,执行docker run dummytest时抛出ModuleNotFoundError: No module named 'mydummyproject'错误。期间尝试修改Dockerfile、目录名及setup.py相关配置,均未解决问题。

解决方法

最终通过在setup.py中使用find_packages()替代原有的package_dir配置,成功解决模块找不到的问题。修改后的setup.py如下:

from setuptools import setup, find_packages

with open("requirements.txt", "r") as _f:
    install_reqs = _f.read().strip().split("\n")

setup(name="dummy",
      version="0.0.1",
      packages=find_packages(),
      install_requires=install_reqs,
      python_requires=">=3.8",
      entry_points={
          'console_scripts': [
              'hello = mydummyproject.__main__:command_line_target'
          ]}
      )

原因说明

原package_dir配置在本地环境中能被setuptools正确识别,但容器化环境下可能存在路径解析差异,导致包未被正确安装到Python环境中。find_packages()会自动递归查找当前目录下所有包含__init__.py的Python包,确保包被完整安装,从而解决模块缺失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:33:35