首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Flask Conda -非conda环境

Docker Flask Conda -非conda环境
EN

Stack Overflow用户
提问于 2020-05-30 18:14:42
回答 2查看 425关注 0票数 0

我正在玩使用conda环境的flask应用程序。App在本地开发中运行良好,所以我想将其停靠。通过Dockerfile构建是成功的,但是当我通过:

代码语言:javascript
复制
docker run -p 5000:5000 3d-photo

我得到了:

代码语言:javascript
复制
Not a conda environment: /opt/conda/envs/myenv
  File "app.py", line 18
    def render(filter_name: str):
                          ^
SyntaxError: invalid syntax
ERROR conda.cli.main_run:execute(39): Subprocess for 'conda run [u'python', u'app.py']' command failed.  Stderr was:
Not a conda environment: /opt/conda/envs/myenv
  File "app.py", line 18
    def render(filter_name: str):
                          ^
SyntaxError: invalid syntax

抛出错误的代码如下:

代码语言:javascript
复制
@app.route("/render/<filter_name>", methods=["POST"])
def render(filter_name: str):
    if request.method == "POST":
        f = request.files["file"]

        tempdir = tempfile.mkdtemp()
        in_dir = tempfile.mkdtemp(prefix="image_", dir=tempdir)
        out_dir = tempfile.mkdtemp(prefix="image_", dir=tempdir)

        image = Image.open(BytesIO(f.read()))
        image.save(in_dir.name + "/image.jpg", "JPEG")

        render_mp4(in_dir.name, out_dir.name, filter_name)

        filename = "image_" + filter_name + ".mp4"
        fout = open(os.path.join(out_dir.name, filename), "rb")

        response = make_response(fout.read())
        response.headers.set("Content-Type", "video/mp4")
        response.headers.set("Content-Disposition", "attachment", filename=filename)
        shutil.rmtree(tempdir)

        return response

和Dockerfile:

代码语言:javascript
复制
FROM ubuntu:latest
FROM continuumio/miniconda:latest
RUN apt-get update && apt-get install -y \
    python3-pip \
    python3-dev \
    build-essential
RUN pip3 install auxlib
COPY . /app
WORKDIR /app
RUN conda env create --file exported_conda_env.yml
SHELL ["conda", "run", "-n", "3DPhotoCreator", "/bin/bash", "-c"]
RUN pip install -r requirements.txt
RUN conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit==10.1.243 -c pytorch
EXPOSE 5000
CMD ["conda", "run", "-n", "myenv", "python", "app.py"]

这里有什么提示吗?

EN

回答 2

Stack Overflow用户

发布于 2020-05-31 07:26:27

您从未创建过名为myenv的环境。看起来您创建了一个名为3DPhotoCreator的环境,但不是myenv。现在还不清楚你想要做什么。

顺便说一句,我认为可能没有必要使用conda run,除非您的依赖项依赖于设置的特殊环境变量。(我不这么认为。)您可能只需调用python解释器,而无需显式激活环境:

代码语言:javascript
复制
CMD /opt/conda/envs/3DPhotoCreator/bin/python app.py
票数 1
EN

Stack Overflow用户

发布于 2021-06-15 21:39:57

您可以从文件创建环境。我们不知道您在environment.yml.Assuming中设置了哪个名称,它是3DPhotoCreator。你使用它来安装包,但是在CMD的最后,你使用的不是这个环境,它甚至不能exist.Change到

代码语言:javascript
复制
CMD ["conda", "run", "-n", "3DPhotoCreator", "python", "app.py"]

为了更清楚地了解所使用的环境,您可以在从environment.yml创建时对其进行命名

代码语言:javascript
复制
conda env create --name myenv --file exported_conda_env.yml

现在你有了myenv,这是从environment.yml创建的重命名的环境(它忽略了environment.yml的第一个字符串'name: 3DPhotoCreator‘)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62100959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档