Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Docker Flask Conda-不是Conda环境_Python_Docker_Anaconda_Conda_Miniconda - Fatal编程技术网

Python Docker Flask Conda-不是Conda环境

Python Docker Flask Conda-不是Conda环境,python,docker,anaconda,conda,miniconda,Python,Docker,Anaconda,Conda,Miniconda,我正在玩使用conda环境的flask应用程序。该应用程序在本地开发中运行良好,所以我想将其归档。通过Dockerfile构建成功,但当我通过以下方式运行应用程序时: docker run -p 5000:5000 3d-photo 我得到: Not a conda environment: /opt/conda/envs/myenv File "app.py", line 18 def render(filter_name: str):

我正在玩使用conda环境的flask应用程序。该应用程序在本地开发中运行良好,所以我想将其归档。通过Dockerfile构建成功,但当我通过以下方式运行应用程序时:

docker run -p 5000:5000 3d-photo
我得到:

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
引发错误的代码如下所示:

@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

这里有什么提示吗?

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

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

CMD /opt/conda/envs/3DPhotoCreator/bin/python app.py

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

CMD ["conda", "run", "-n", "3DPhotoCreator", "python", "app.py"]
为了更清楚地了解所使用的环境,您可以在从environment.yml创建时对其命名

conda env create --name myenv --file exported_conda_env.yml

现在你有了myenv,它刚被重命名为environment,它是从environment.yml创建的(它忽略了environment.yml的第一个字符串'name:3dpoticreator')

是否有任何特定的理由使用conda运行应用程序?我需要通过conda安装的pytorch和torchvision
conda env create --name myenv --file exported_conda_env.yml