Python Dockerfile生成映像错误:分发版不包含命名空间包的模块或包

Python Dockerfile生成映像错误:分发版不包含命名空间包的模块或包,python,linux,docker,ubuntu,dockerfile,Python,Linux,Docker,Ubuntu,Dockerfile,我正在尝试构建python项目的docker映像。我的项目有一个依赖项包,“我的包”,需要先安装它。它是一个名称空间包 我在构建这个python项目的docker映像时遇到了这个错误。我几乎可以在Dockerfile中运行pip install XYZ来安装所有东西,但我不确定正确安装本地python命名空间包的方法是什么,这里是my_包 我在一个不是名称空间包的普通python包上遵循了完全相同的步骤,它工作得非常好。有没有在Docker中安装python命名空间包的指针 Dockerfile

我正在尝试构建python项目的docker映像。我的项目有一个依赖项包,
“我的包”
,需要先安装它。它是一个名称空间包

我在构建这个python项目的docker映像时遇到了这个错误。我几乎可以在Dockerfile中运行pip install XYZ来安装所有东西,但我不确定正确安装本地python命名空间包的方法是什么,这里是my_包

我在一个不是名称空间包的普通python包上遵循了完全相同的步骤,它工作得非常好。有没有在Docker中安装python命名空间包的指针

Dockerfile:

ARG BASE_IMAGE=ubuntu:18.04

FROM ${BASE_IMAGE} AS compile-image
ARG BASE_IMAGE=ubuntu:18.04
ENV PYTHONUNBUFFERED TRUE

RUN --mount=type=cache,id=apt-dev,target=/var/cache/apt \
    apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
    ca-certificates \
    g++ \
    python3.8-dev \
    python3.8-distutils \
    python3.8-venv \
    openjdk-11-jre-headless \
    curl \
    && rm -rf /var/lib/apt/lists/* \
    && cd /tmp \
    && curl -O https://bootstrap.pypa.io/get-pip.py \
    && python3.8 get-pip.py

RUN python3.8 -m venv /home/venv

ENV PATH="/home/venv/bin:$PATH"

RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
RUN update-alternatives --install /usr/local/bin/pip pip /usr/local/bin/pip3.8 1

COPY my_package/* /tmp/my_package/
WORKDIR /tmp/my_package/
RUN python setup.py install
Docker构建命令:

ARG BASE_IMAGE=ubuntu:18.04

FROM ${BASE_IMAGE} AS compile-image
ARG BASE_IMAGE=ubuntu:18.04
ENV PYTHONUNBUFFERED TRUE

RUN --mount=type=cache,id=apt-dev,target=/var/cache/apt \
    apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
    ca-certificates \
    g++ \
    python3.8-dev \
    python3.8-distutils \
    python3.8-venv \
    openjdk-11-jre-headless \
    curl \
    && rm -rf /var/lib/apt/lists/* \
    && cd /tmp \
    && curl -O https://bootstrap.pypa.io/get-pip.py \
    && python3.8 get-pip.py

RUN python3.8 -m venv /home/venv

ENV PATH="/home/venv/bin:$PATH"

RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
RUN update-alternatives --install /usr/local/bin/pip pip /usr/local/bin/pip3.8 1

COPY my_package/* /tmp/my_package/
WORKDIR /tmp/my_package/
RUN python setup.py install
$DOCKER\u BUILDKIT=1 DOCKER build——文件Dockerfile。
错误:

ARG BASE_IMAGE=ubuntu:18.04

FROM ${BASE_IMAGE} AS compile-image
ARG BASE_IMAGE=ubuntu:18.04
ENV PYTHONUNBUFFERED TRUE

RUN --mount=type=cache,id=apt-dev,target=/var/cache/apt \
    apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
    ca-certificates \
    g++ \
    python3.8-dev \
    python3.8-distutils \
    python3.8-venv \
    openjdk-11-jre-headless \
    curl \
    && rm -rf /var/lib/apt/lists/* \
    && cd /tmp \
    && curl -O https://bootstrap.pypa.io/get-pip.py \
    && python3.8 get-pip.py

RUN python3.8 -m venv /home/venv

ENV PATH="/home/venv/bin:$PATH"

RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
RUN update-alternatives --install /usr/local/bin/pip pip /usr/local/bin/pip3.8 1

COPY my_package/* /tmp/my_package/
WORKDIR /tmp/my_package/
RUN python setup.py install
[+]建筑0.6s(12/12)完工
=>[内部]从Dockerfile 0.0s加载生成定义
=>=>正在传输dockerfile:907B 0.0s
=>[内部]加载。dockerignore 0.0s
=>=>传输上下文:2B 0.0s
=>[内部]加载docker.io/library/ubuntu的元数据:18.04 0.1s
=>[内部]加载生成上下文0.0s
=>=>传输上下文:3.11kB 0.0s
=>[编译图像1/8]来自docker.io/library/ubuntu:18。04@sha256:4bc3ae6596938cb0d9e5ac51a1152ec9dcac2a1c50829c74abd9c4361e321b26 0.0s
=>CACHED[compile image 2/8]运行--mount=type=cache,id=apt-dev,target=/var/cache/apt-apt-get-update&&DEBIAN\u-FRONTEND=非交互式apt-get-install--无安装0.0s
=>缓存的[compile image 3/8]运行python3.8-m venv/home/venv 0.0s
=>缓存的[compile image 4/8]运行更新替代方案--安装/usr/bin/python/usr/bin/python3.8 1 0.0s
=>CACHED[compile image 5/8]运行更新选项——安装/usr/local/bin/pip-pip/usr/local/bin/pip3.8 1 0.0s
=>[编译图像6/8]复制我的\u包/*/tmp/my\u包/0.0s
=>[编译图像7/8]WORKDIR/tmp/my_package/0.0s
=>错误[compile image 8/8]运行python setup.py安装0.4s
------
>[编译图像8/8]运行python setup.py安装:
#12 0.370 my_package setup命令中出错:分发版不包含命名空间包“my_package”的模块或包
------
executor无法运行[/bin/sh-c python setup.py install]:退出代码:1
myu包结构:

my_package
├── [4.0K]  my_package
│   └── [  56]  __init__.py
└── [ 162]  setup.py
setup.py:

from setuptools import setup, find_packages

setup(
    name='my_package',
    version='0.0.1',
    namespace_packages=['my_package'],
    packages=find_packages()
)
\uuuu初始化.py文件:

__import__('pkg_resources').declare_namespace(__name__)

在Dockerfile中,您需要放置:

COPY my_package/. /tmp/my_package/