Gitlab Flask 页面:使用 .gitlab-ci.yml 文件为 Frozen Flask Application 安装 python GDAL 包时出现问题

Posted

技术标签:

【中文标题】Gitlab Flask 页面:使用 .gitlab-ci.yml 文件为 Frozen Flask Application 安装 python GDAL 包时出现问题【英文标题】:Gitlab Flask Page: Problems with installing python GDAL package for Frozen Flask Application with .gitlab-ci.yml file 【发布时间】:2022-01-23 23:33:53 【问题描述】:

我目前正在尝试使用 freeze-flask 将烧瓶应用程序上传为 gitlab 页面。但是,当尝试在服务器上设置所有内容时,管道会失败。我的 .gitlab-ci.yml 文件如下所示:

image: python:3.9.5

pages:
  before_script:
    - apt update && apt install -y libgdal-dev
  script:
  - pip install --upgrade pip
  - pip install --no-cache-dir -r requirements.txt
  - FLASK_APP=app.py flask freeze
  artifacts:
    paths:
    - public
  only:
  - master


而 requirements.txt 文件看起来像这样:

affine==2.3.0
beautifulsoup4==4.10.0
dask==2021.6.2
demessaging==0.1.3
Flask==1.1.2
Frozen_Flask==0.18
future==0.18.2
GDAL==3.3.0
geopandas==0.9.0
ipython==7.30.1
matplotlib==3.4.2
mlrose==1.3.0
networkx==2.3
numpy==1.21.0
osgeo==0.0.1
osr==0.0.1
pandas==1.2.5
Pillow==8.4.0
plotly==4.14.3
psyplot==1.3.1
pyhdf==0.10.3
pyproj==3.1.0
pysftp==0.2.9
python_dateutil==2.8.2
pytz==2021.1
rasterio==1.2.6
requests==2.25.1
rioxarray==0.6.1
salem==0.3.4
scikit_image==0.18.1
scikit_learn==1.0.1
scipy==1.7.0
Shapely==1.7.1
six==1.16.0
wradlib==1.2.1
xarray==0.18.2

失败管道中的错误是指设置 GDAL 包的一些问题。因此,脚本一直运行,直到它必须在环境中设置所有包,它在包 GDAL 处停止。但是,这个错误很难弄清楚,因为它非常神秘。我还没有找到解决方法,因为我依赖应用程序中的 GDAL 包,我希望你能帮助我。提前致谢!错误的结尾看起来像这样(整个错误消息很大,我认为在这里没有帮助):

                     from extensions/gdal_array_wrap.cpp:174:
    /usr/local/include/python3.9/ceval.h:130:37: note: declared here
     Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void);
                                         ^~~~~~~~~~~~~~~~~~
    error: command '/usr/bin/gcc' failed with exit code 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-wqrt2f9g/gdal_224acb310d654aeb97d659380ad0b7f2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-wqrt2f9g/gdal_224acb310d654aeb97d659380ad0b7f2/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-cgdjkbmo/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.9/GDAL Check the logs for full command output.
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1

【问题讨论】:

【参考方案1】:

您需要安装 gcc 才能获得所需的构建工具。你可以通过apt 安装gcc 或安装build-essential 元包,其中将包括gcc 和其他常见的构建要求。

image: python:3.9-slim
pages:
  before_script:
    - apt update && apt install -y build-essential libgdal-dev

【讨论】:

以上是关于Gitlab Flask 页面:使用 .gitlab-ci.yml 文件为 Frozen Flask Application 安装 python GDAL 包时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

gitlab中的覆盖徽章未知

gitlab备份还原及迁移

docker下gitlab安装配置使用(完整版)

gitlab配置自己的redis

gitlab 升级

GitLab查询当前版本