没有部署Python Flask API项目的位置

2024-05-16 13:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我认为将python api项目部署到某个地方很容易。 但我错了,我不能部署到任何平台

到目前为止,我已经尝试:

  1. Azure、Webapp和功能应用程序
  2. Python之家
  3. 赫罗库

当我尝试为这一个安装依赖项包时,它们都有问题: scikit-fmm

以下是错误消息:

Python版本是 3.7.10 Linux

pip install scikit-fmm

Collecting scikit-fmm
  Using cached scikit-fmm-2021.2.2.tar.gz (419 kB)
Requirement already satisfied: numpy>=1.0.2 in /usr/local/lib/python3.7/site-packages (from scikit-fmm) (1.18.1)
Building wheels for collected packages: scikit-fmm
  Building wheel for scikit-fmm (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9
d5f6e54/setup.py'"'"'; __file__='"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"',
 open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-
5ebu19pu
       cwd: /tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/
  Complete output (32 lines):
  running bdist_wheel
  running build
  running config_cc
  unifing config_cc, config, build_clib, build_ext, build commands --compiler options
  running config_fc
  unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
  running build_src
  build_src
  building extension "skfmm.cfmm" sources
  building extension "skfmm.pheap" sources
  build_src: building npy-pkg config files
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.7
  creating build/lib.linux-x86_64-3.7/skfmm
  copying skfmm/pfmm.py -> build/lib.linux-x86_64-3.7/skfmm
  copying skfmm/setup.py -> build/lib.linux-x86_64-3.7/skfmm

  copying skfmm/heap.py -> build/lib.linux-x86_64-3.7/skfmm
  copying skfmm/__init__.py -> build/lib.linux-x86_64-3.7/skfmm
  running build_ext
  customize UnixCCompiler
  customize UnixCCompiler using build_ext
  customize UnixCCompiler
  customize UnixCCompiler using build_ext
  building 'skfmm.cfmm' extension
  compiling C++ sources
  C compiler: g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC

  creating build/temp.linux-x86_64-3.7/skfmm
  compile options: '-Iskfmm -I/usr/local/lib/python3.7/site-packages/numpy/core/include -I/usr/local/include/python3.7m -c'
  g++: skfmm/fmm.cpp
  error: Command "g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Iskfmm -I/usr/local/lib/python3.7/site-packages/numpy/
core/include -I/usr/local/include/python3.7m -c skfmm/fmm.cpp -o build/temp.linux-x86_64-3.7/skfmm/fmm.o -MMD -MF build/temp.linux-x86_64-3.7/skfmm/fmm.o.d"
 failed with exit status 127
  ----------------------------------------
  ERROR: Failed building wheel for scikit-fmm
  Running setup.py clean for scikit-fmm
Failed to build scikit-fmm
Installing collected packages: scikit-fmm
    Running setup.py install for scikit-fmm ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3
e9d5f6e54/setup.py'"'"'; __file__='"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"
', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-re
cord-gku3heb3/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.7m/scikit-fmm
         cwd: /tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/
    Complete output (28 lines):
Note: if you need to uninstall you should `pip install scikit-fmm` instead of using `setup.py install`
    running install
    running build
    running config_cc
    unifing config_cc, config, build_clib, build_ext, build commands --compiler options
    running config_fc
    unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
    running build_src
    build_src
    building extension "skfmm.cfmm" sources
    building extension "skfmm.pheap" sources
    build_src: building npy-pkg config files
    running build_py
    running build_ext
    customize UnixCCompiler
    customize UnixCCompiler using build_ext
    customize UnixCCompiler
    customize UnixCCompiler using build_ext
    building 'skfmm.cfmm' extension
    compiling C++ sources
    C compiler: g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC

    creating build/temp.linux-x86_64-3.7/skfmm
    compile options: '-Iskfmm -I/usr/local/lib/python3.7/site-packages/numpy/core/include -I/usr/local/include/python3.7m -c'
    g++: skfmm/fmm.cpp
    error: Command "g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Iskfmm -I/usr/local/lib/python3.7/site-packages/nump
y/core/include -I/usr/local/include/python3.7m -c skfmm/fmm.cpp -o build/temp.linux-x86_64-3.7/skfmm/fmm.o -MMD -MF build/temp.linux-x86_64-3.7/skfmm/fmm.o.
d" failed with exit status 127
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-bihhvskj/s
cikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/setup.py'"'"'; __file__='"'"'/tmp/pip-install-bihhvskj/scikit-fmm_13c74930cf4a4cfc949e4a3e9d5f6e54/setup.py'"'"';
f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"
'))' install --record /tmp/pip-record-gku3heb3/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3
.7m/scikit-fmm Check the logs for full command output.

更新1

感谢JasonPan的建议,我知道Azure web app上安装了所有依赖项

我的应用程序部署也成功,但网站无法运行。 我检查了日志,发现了许多错误:

2021-04-22T07:44:09.836453360Z [2021-04-22 07:44:09 +0000] [78] [ERROR] Retrying in 1 second.
2021-04-22T07:44:10.838153643Z [2021-04-22 07:44:10 +0000] [78] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:10.839051770Z [2021-04-22 07:44:10 +0000] [78] [ERROR] Retrying in 1 second.
2021-04-22T07:44:11.840184035Z [2021-04-22 07:44:11 +0000] [78] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:11.892574745Z [2021-04-22 07:44:11 +0000] [77] [INFO] Worker exiting (pid: 77)
2021-04-22T07:44:12.375216277Z [2021-04-22 07:44:12 +0000] [80] [INFO] Booting worker with pid: 80
2021-04-22T07:44:15.438983261Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:15.445347462Z  * Environment: production
2021-04-22T07:44:15.486186353Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:15.486284356Z    Use a production WSGI server instead.
2021-04-22T07:44:15.486294356Z  * Debug mode: on
2021-04-22T07:44:15.486487762Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:15.486499263Z  * Restarting with stat
2021-04-22T07:44:16.191646039Z [2021-04-22 07:44:16 +0000] [81] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:16.192867778Z [2021-04-22 07:44:16 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:16.193252490Z [2021-04-22 07:44:16 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:17.198116636Z [2021-04-22 07:44:17 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:17.198923561Z [2021-04-22 07:44:17 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:18.202126554Z [2021-04-22 07:44:18 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:18.202984981Z [2021-04-22 07:44:18 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:19.205241244Z [2021-04-22 07:44:19 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:19.206164874Z [2021-04-22 07:44:19 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:20.212049651Z [2021-04-22 07:44:20 +0000] [81] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:20.212092253Z [2021-04-22 07:44:20 +0000] [81] [ERROR] Retrying in 1 second.
2021-04-22T07:44:21.224597387Z [2021-04-22 07:44:21 +0000] [81] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:21.290608046Z [2021-04-22 07:44:21 +0000] [80] [INFO] Worker exiting (pid: 80)
2021-04-22T07:44:21.738321231Z [2021-04-22 07:44:21 +0000] [83] [INFO] Booting worker with pid: 83
2021-04-22T07:44:24.918365696Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:24.919426527Z  * Environment: production
2021-04-22T07:44:24.927208058Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:24.927297361Z    Use a production WSGI server instead.
2021-04-22T07:44:24.927308061Z  * Debug mode: on
2021-04-22T07:44:24.946942144Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:24.948477689Z  * Restarting with stat
2021-04-22T07:44:25.709049858Z [2021-04-22 07:44:25 +0000] [84] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:25.710487501Z [2021-04-22 07:44:25 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:25.710858112Z [2021-04-22 07:44:25 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:26.714606897Z [2021-04-22 07:44:26 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:26.715566625Z [2021-04-22 07:44:26 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:27.720325541Z [2021-04-22 07:44:27 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:27.721384572Z [2021-04-22 07:44:27 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:28.723318203Z [2021-04-22 07:44:28 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:28.724247231Z [2021-04-22 07:44:28 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:29.729845005Z [2021-04-22 07:44:29 +0000] [84] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:29.729874606Z [2021-04-22 07:44:29 +0000] [84] [ERROR] Retrying in 1 second.
2021-04-22T07:44:30.737813594Z [2021-04-22 07:44:30 +0000] [84] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:30.856350361Z [2021-04-22 07:44:30 +0000] [83] [INFO] Worker exiting (pid: 83)
2021-04-22T07:44:31.803916981Z [2021-04-22 07:44:31 +0000] [86] [INFO] Booting worker with pid: 86
2021-04-22T07:44:35.656121474Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:35.657028702Z  * Environment: production
2021-04-22T07:44:35.657041702Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:35.657838227Z    Use a production WSGI server instead.
2021-04-22T07:44:35.664767041Z  * Debug mode: on
2021-04-22T07:44:35.694054348Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:35.695509793Z  * Restarting with stat
2021-04-22T07:44:36.453792055Z [2021-04-22 07:44:36 +0000] [87] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:36.461107781Z [2021-04-22 07:44:36 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:36.461484393Z [2021-04-22 07:44:36 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:37.468035639Z [2021-04-22 07:44:37 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:37.469176575Z [2021-04-22 07:44:37 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:38.474207365Z [2021-04-22 07:44:38 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:38.475101293Z [2021-04-22 07:44:38 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:39.480162485Z [2021-04-22 07:44:39 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:39.481085413Z [2021-04-22 07:44:39 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:40.486103803Z [2021-04-22 07:44:40 +0000] [87] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:40.487006832Z [2021-04-22 07:44:40 +0000] [87] [ERROR] Retrying in 1 second.
2021-04-22T07:44:41.492332131Z [2021-04-22 07:44:41 +0000] [87] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:41.557393470Z [2021-04-22 07:44:41 +0000] [86] [INFO] Worker exiting (pid: 86)
2021-04-22T07:44:42.033036773Z [2021-04-22 07:44:42 +0000] [89] [INFO] Booting worker with pid: 89
2021-04-22T07:44:45.214064517Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:45.214945645Z  * Environment: production
2021-04-22T07:44:45.215503462Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:45.221783155Z    Use a production WSGI server instead.
2021-04-22T07:44:45.221798256Z  * Debug mode: on
2021-04-22T07:44:45.243216415Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:45.251290463Z  * Restarting with stat
2021-04-22T07:44:46.019374903Z [2021-04-22 07:44:46 +0000] [90] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:46.026407319Z [2021-04-22 07:44:46 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:46.026422620Z [2021-04-22 07:44:46 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:47.031561655Z [2021-04-22 07:44:47 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:47.032497484Z [2021-04-22 07:44:47 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:48.035110541Z [2021-04-22 07:44:48 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:48.035988968Z [2021-04-22 07:44:48 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:49.040344579Z [2021-04-22 07:44:49 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:49.041809624Z [2021-04-22 07:44:49 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:50.042151212Z [2021-04-22 07:44:50 +0000] [90] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:50.045851326Z [2021-04-22 07:44:50 +0000] [90] [ERROR] Retrying in 1 second.
2021-04-22T07:44:51.064407674Z [2021-04-22 07:44:51 +0000] [90] [ERROR] Can't connect to ('0.0.0.0', 8000)
2021-04-22T07:44:51.114340611Z [2021-04-22 07:44:51 +0000] [89] [INFO] Worker exiting (pid: 89)
2021-04-22T07:44:51.546058198Z [2021-04-22 07:44:51 +0000] [92] [INFO] Booting worker with pid: 92
2021-04-22T07:44:54.704747927Z  * Serving Flask app "app" (lazy loading)
2021-04-22T07:44:54.764574498Z  * Environment: production
2021-04-22T07:44:54.764595098Z    WARNING: This is a development server. Do not use it in a production deployment.
2021-04-22T07:44:54.764601098Z    Use a production WSGI server instead.
2021-04-22T07:44:54.764604898Z  * Debug mode: on
2021-04-22T07:44:54.764659100Z  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2021-04-22T07:44:54.764668000Z  * Restarting with stat
2021-04-22T07:44:55.487360391Z [2021-04-22 07:44:55 +0000] [93] [INFO] Starting gunicorn 20.0.4
2021-04-22T07:44:55.494123403Z [2021-04-22 07:44:55 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
2021-04-22T07:44:55.495235437Z [2021-04-22 07:44:55 +0000] [93] [ERROR] Retrying in 1 second.

搜索了一会儿并尝试了我在网上找到的fuserkill命令,但fuser在Web app上无法识别,并且kill命令无法处理此错误消息:

/home# kill `lsof -i :8000`
-bash: lsof: command not found
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l

更新2

使用以下命令:

gunicorn--bind=0.0.0.0--timeout 600应用程序:应用程序

这是输出

ut 600  application:app18b:/tmp/8d90556500a845d# gunicorn --bind=0.0.0.0 --timeou
[2021-04-23 07:30:39 +0000] [93] [INFO] Starting gunicorn 20.0.4
[2021-04-23 07:30:39 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:39 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:40 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:40 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:41 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:41 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:42 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:42 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:43 +0000] [93] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2021-04-23 07:30:43 +0000] [93] [ERROR] Retrying in 1 second.
[2021-04-23 07:30:44 +0000] [93] [ERROR] Can't connect to ('0.0.0.0', 8000)

在高级工具下使用Azure app SSH,真是太痛苦了。 我的ssh控制台经常断开连接,有时它会为我找到正确的文件夹,然后我可以看到我的python代码文件。有时它会显示一个奇怪的文件夹,里面根本没有我的代码。。。。 e、 g

root@ece8fefe856f:/home# ls
37391ef6fffba0c96cda20c7  ASP.NET  LogFiles  site

Tags: installinpybuildinfousewitherror
3条回答

您可以选择通过Heroku Docker注册表在本地构建映像并(测试后)将其推送到Heroku进行部署。优点是您可以控制构建(而不是Heroku)

定义Python应用程序的Dockerfile(下面的示例)

FROM python:3.9-slim

COPY app/ /app

EXPOSE 5000

WORKDIR /app
RUN pip install -r requirements.txt

ENTRYPOINT ["python"]
CMD ["app.py"]

本地构建映像(使用Heroky要求的命名约定,即appname)

# build image
docker build -t registry.heroku.com/appname/web .

图像应包含您的应用程序以及您需要的所有依赖项/模型。您可以使用docker run在本地测试这一点

按下并释放图像:

# login into Docker Registry (only once)
heroku container:login
# push
docker push registry.heroku.com/appname/web
# release
heroku container:release web -a appname

g++命令的127状态代码表明g++未安装在您尝试安装的平台上。在所有平台上都会出现相同的错误吗

更新

测试之后,由于scikit-fmm的最新版本与azure web app不兼容,我使用了scikit-fmm==2021.1.21版本。它对我有用

enter image description here

感谢Glenn的提醒,您可以在WebSh中使用下面的cmd

apt-get update
apt-get install g++
pip install scikit-fmm==2021.1.21

以前的

不知道需要在requirements.txt中安装哪些软件包

我个人建议您使用容器(linux)创建azure web app,以便您可以在部署项目后手动执行脚本以安装项目使用的软件包

我没有在Linux下部署flask应用程序。如果您可以使用windows,我建议您使用windows webapp

你可以在下面的帖子中参考我的答案。

How to deploy a Flask+React application to Azure Web Service

相关问题 更多 >