简体   繁体   English

Python package 我在 Docker 容器中创建的导入不正确

[英]Python package I created not importing correctly in Docker container

I created a package out of a project and I want to run that package in a Docker container.我从项目中创建了一个 package,我想在 Docker 容器中运行该 package。 The package is a Flask application and after installing the package locally I can run the project with FLASK_APP=packagename and flask run . package 是一个 Flask 应用程序,在本地安装 package 后,我可以使用FLASK_APP=packagenameflask run该项目。 When I do the same in the Docker container I get the error Error: Could not import "packagename.packagename".当我在 Docker 容器中执行相同操作时,出现错误Error: Could not import "packagename.packagename". This is my Dockerfile:这是我的 Dockerfile:

FROM python:3.7
FROM pytorch/pytorch

MAINTAINER Nikolay Valkov nikolay1499@gmail.com

# set a directory for the app
WORKDIR /usr/app/

# copy all the files to the container
COPY . .

# install dependencies
RUN pip install --no-cache-dir -r requirements.txt

WORKDIR /usr/app/src/

RUN pip install -e .

WORKDIR /usr/app/src/packagename

# tell the port number the container should expose
EXPOSE 5000

ENV FLASK_APP packagename

# run the command
CMD flask run

Any ideas why this occurs only in the Docker container and not locally.任何想法为什么这只发生在 Docker 容器而不是本地。

You can try do it like this, it should copy the package to your working directory: changes replace WORKDIR with ADD OR COPY CMD您可以尝试这样做,它应该将 package 复制到您的工作目录:更改将 WORKDIR 替换为 ADD 或 COPY CMD

FROM python:3.7
FROM pytorch/pytorch

MAINTAINER Nikolay Valkov nikolay1499@gmail.com

# set a directory for the app
WORKDIR /usr/app/

# copy all the files to the container
COPY . .

# install dependencies
RUN pip install --no-cache-dir -r requirements.txt

WORKDIR /usr/app/src/

RUN pip install -e .

ADD /usr/app/src/packagename packagename

# tell the port number the container should expose
EXPOSE 5000

ENV FLASK_APP packagename

# run the command
CMD flask run

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM