Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 ModuleNotFoundError,即使代码中不再包含此模块_Python_Docker_Flask Cors - Fatal编程技术网

Python Docker ModuleNotFoundError,即使代码中不再包含此模块

Python Docker ModuleNotFoundError,即使代码中不再包含此模块,python,docker,flask-cors,Python,Docker,Flask Cors,我已经编写了一个FlaskAPI,我想在docker容器中运行它。但是,错误:在导入“api”时,引发了一个ImportError:不断出现,即使找不到的模块不再在代码中 错误发生后,我停止、删除并重新启动Docker容器以运行Flask Api: docker stop privacy_api docker rm privacy_api docker build -t privacy_api_image . docker run -dit --name=privacy_api -e FLASK

我已经编写了一个FlaskAPI,我想在docker容器中运行它。但是,
错误:在导入“api”时,引发了一个ImportError:
不断出现,即使找不到的模块不再在代码中

错误发生后,我停止、删除并重新启动Docker容器以运行Flask Api:

docker stop privacy_api
docker rm privacy_api
docker build -t privacy_api_image .
docker run -dit --name=privacy_api -e FLASK_APP=api.py -p 5000:5000 -v main_api:/app --network privacy-network privacy_api_image
5963fb7fa194d6710ae5e713d2060bd0be5338b04636bf306b78bda4bb596524

docker logs -f privacy_api
但是,这是我得到的输出:

* Serving Flask app "api.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Usage: flask run [OPTIONS]

    Error: While importing "api", an ImportError was raised:

    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/site-packages/flask/cli.py", line 240, in locate_app
        __import__(module_name)
      File "/app/api.py", line 2, in <module>
        from flask_cors import CORS, cross_origin
    ModuleNotFoundError: No module named 'flask_cors'
这是
Dockerfile

FROM python:3
COPY . /app
WORKDIR /app
RUN pip install -r requirements-main-api.txt
EXPOSE 5000
ENTRYPOINT ["flask"]
CMD ["run", "--host=0.0.0.0"]
flask==1.1.1
mysqlclient==1.4.6
selenium
requests
pytz
这是
requirements-main-api.txt文件

FROM python:3
COPY . /app
WORKDIR /app
RUN pip install -r requirements-main-api.txt
EXPOSE 5000
ENTRYPOINT ["flask"]
CMD ["run", "--host=0.0.0.0"]
flask==1.1.1
mysqlclient==1.4.6
selenium
requests
pytz
我不理解这个错误,因为Cors不再在api.py文件中


你有什么想法吗?谢谢你的帮助

您需要在requirements-main-api.txt中添加
Flask Cors==1.10.3

如果已删除此库的所有依赖项调用,请确保保存该文件,并使用
--无缓存
标志再次运行dockerfile


您还可以使用
docker rmi
删除以前的映像,如果您想清理docker守护程序系统:
docker system prune-a

您需要将
Flask Cors==1.10.3
添加到您的requirements-main-api.txt中

如果已删除此库的所有依赖项调用,请确保保存该文件,并使用
--无缓存
标志再次运行dockerfile


您还可以使用
docker rmi
删除以前的映像,如果您想清理docker守护程序系统:
docker system prune-a
删除
-v main\u api:/app
选项

这样做的目的是将
主api
命名卷的内容装载到
/app
上。即使Dockerfile更新了映像中的代码,此运行时选项也会隐藏该更改并使用卷的现有内容


这在过去显然是有效的,因为第一次(仅)运行容器时,图像的内容被复制到一个新的空卷中。如果卷中已经有内容,Docker将不会覆盖潜在的重要用户数据,因此如果您尝试将应用程序代码放入命名卷,您将运行代码的固定旧版本。

删除
-v main\u api:/app
选项

这样做的目的是将
主api
命名卷的内容装载到
/app
上。即使Dockerfile更新了映像中的代码,此运行时选项也会隐藏该更改并使用卷的现有内容


这在过去显然是有效的,因为第一次(仅)运行容器时,图像的内容被复制到一个新的空卷中。如果卷中已有内容,Docker将不会覆盖潜在的重要用户数据,因此如果您尝试将应用程序代码放入命名卷,您将运行一个固定的旧版本的代码。

当我没有在
api.py
中导入它时,为什么我需要添加
Flask Cors==1.10.3
?似乎您确实在第2行导入了它……如果您发布的代码(您在此处显示的api.py文件)也是“/app/api.py”,则会出现错误文件…然后删除了第2行,该行以前是“从flask_cors import cors,cross_origin”如果您删除了它,那么您不再需要Flask COR,您也可以从我以前的要求中删除它,但它不再包含在api.py文件中,因此我很困惑,为什么即使使用
--无缓存
扁平附件,它仍然会给我错误。对于一个明显的问题,对不起,您是否保存了新的api.py?如果您不介意系统中已有的图像,您也可以删除以前的图像
docker rmi privacy\u api\u image
或者更粗鲁的方式:
docker system prune--all
谢谢,我已经保存了它,并且已经对docker系统进行了删减,但是我会尝试你为什么我需要添加
Flask Cors==1.10.3
,而我没有在
api.py
中导入它?看起来你确实在第2行导入了它……如果你发布的代码(你在这里显示的api.py文件)也是“/app/api.py”,那么错误会说什么文件…然后删除了第2行,该行以前是“从flask_cors import cors,cross_origin”如果您删除了它,那么您不再需要Flask COR,您也可以从我以前的要求中删除它,但它不再包含在api.py文件中,因此我很困惑,为什么即使使用
--无缓存
扁平附件,它仍然会给我错误。对于一个明显的问题,对不起,您是否保存了新的api.py?如果你不介意系统中已有的图像,你也可以删除以前的图像
docker rmi privacy\u api\u image
或者更粗鲁的方式:
docker system prune——谢谢,我已经保存了它,docker system prune已经删除了,但无论如何我都会在那里尝试你,我可以共享应用程序的内容吗?我试图从那里获取已部署容器的源代码,这样我就可以共享应用程序的内容了?我试图获取已部署容器的源代码