Django、GDAL 和 CircleCI 2
Django, GDAL and CircleCI 2
我有一个配置了 GeoDjango 的 Django 应用程序,它在 CircleCI 2.0 构建上失败并出现以下错误:
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library. Is GDAL installed? If it is, try setting GDAL_LIBRARY_PATH in your settings.
但是,当我从 settings.py
中的 DJANGO_APPS
中删除 'django.contrib.gis'
时,构建运行成功。
在 postgres 和 GDAL docker 图像之外,是否有在 CircleCI 中配置 GDAL 的额外步骤?我(可能是错误的)假设在安装 docker 图像后会找到 GDAL。下面是我的 config.yml
:
version: 2
jobs:
build:
docker:
- image: circleci/python:3.6.3
- image: circleci/postgres:10.1-postgis
environment:
- POSTGRES_USER=ubuntu
- POSTGRES_DB=myapp_test
- image: geodata/gdal
working_directory: ~/repo
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "requirements.txt" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run:
name: install dependencies
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
- save_cache:
paths:
- ./venv
key: v1-dependencies-{{ checksum "requirements.txt" }}
- run:
name: run tests
command: |
. venv/bin/activate
python manage.py test
environment:
DATABASE_URL: "postgres://ubuntu@localhost:5432/myapp_test"
- store_artifacts:
path: test-reports
destination: test-reports
我不熟悉 Docker,但我在安装 GDAL 时遇到了很多问题。通常,当我必须在 Django 中设置需要 GDAL 的环境时,我会(大致)遵循以下步骤。
首先我 运行 这些命令,安装 GDAL 库并在安装 python 库之前设置头文件:
sudo apt-get install libgdal-dev
gdal-config --version # to see what version of GDAL you have
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
接下来,在我的 reqs.txt 某处有这一行:
GDAL==2.1.0 # replace the version with the one you get from gdal-config
我在 reqs.txt:
中安装了软件包
pip install -r reqs.txt
通常这就是我设置 GDAL 所需要的,这样我就可以使用 django.contrib.gis
。
希望对您有所帮助
问题是您的第三个图像 运行 在一个单独的容器中,并且 GDAL 在第一个容器中不可用。
我使用来自 Docker Hub 的 docker 图片 wooyek/geodjango
进行了 geodjango 测试 运行。
这是我的 config.yml
的开头:
version: 2
jobs:
build:
docker:
# image with pre-installed geodjango libs
- image: wooyek/geodjango
# postgis database
- image: circleci/postgres:alpine-postgis-ram
environment:
POSTGRES_USER: postgres
POSTGRES_DB: circle_test
我通过添加以下内容修复了它:
apt-get update && apt-get install -y \
gdal-bin python-gdal python3-gdal
就在你 运行 pip install
:
- run:
name: install dependencies
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
apt-get update && apt-get install -y \
gdal-bin python-gdal python3-gdal
我有一个配置了 GeoDjango 的 Django 应用程序,它在 CircleCI 2.0 构建上失败并出现以下错误:
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library. Is GDAL installed? If it is, try setting GDAL_LIBRARY_PATH in your settings.
但是,当我从 settings.py
中的 DJANGO_APPS
中删除 'django.contrib.gis'
时,构建运行成功。
在 postgres 和 GDAL docker 图像之外,是否有在 CircleCI 中配置 GDAL 的额外步骤?我(可能是错误的)假设在安装 docker 图像后会找到 GDAL。下面是我的 config.yml
:
version: 2
jobs:
build:
docker:
- image: circleci/python:3.6.3
- image: circleci/postgres:10.1-postgis
environment:
- POSTGRES_USER=ubuntu
- POSTGRES_DB=myapp_test
- image: geodata/gdal
working_directory: ~/repo
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "requirements.txt" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run:
name: install dependencies
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
- save_cache:
paths:
- ./venv
key: v1-dependencies-{{ checksum "requirements.txt" }}
- run:
name: run tests
command: |
. venv/bin/activate
python manage.py test
environment:
DATABASE_URL: "postgres://ubuntu@localhost:5432/myapp_test"
- store_artifacts:
path: test-reports
destination: test-reports
我不熟悉 Docker,但我在安装 GDAL 时遇到了很多问题。通常,当我必须在 Django 中设置需要 GDAL 的环境时,我会(大致)遵循以下步骤。
首先我 运行 这些命令,安装 GDAL 库并在安装 python 库之前设置头文件:
sudo apt-get install libgdal-dev
gdal-config --version # to see what version of GDAL you have
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
接下来,在我的 reqs.txt 某处有这一行:
GDAL==2.1.0 # replace the version with the one you get from gdal-config
我在 reqs.txt:
中安装了软件包pip install -r reqs.txt
通常这就是我设置 GDAL 所需要的,这样我就可以使用 django.contrib.gis
。
希望对您有所帮助
问题是您的第三个图像 运行 在一个单独的容器中,并且 GDAL 在第一个容器中不可用。
我使用来自 Docker Hub 的 docker 图片 wooyek/geodjango
进行了 geodjango 测试 运行。
这是我的 config.yml
的开头:
version: 2
jobs:
build:
docker:
# image with pre-installed geodjango libs
- image: wooyek/geodjango
# postgis database
- image: circleci/postgres:alpine-postgis-ram
environment:
POSTGRES_USER: postgres
POSTGRES_DB: circle_test
我通过添加以下内容修复了它:
apt-get update && apt-get install -y \
gdal-bin python-gdal python3-gdal
就在你 运行 pip install
:
- run:
name: install dependencies
command: |
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
apt-get update && apt-get install -y \
gdal-bin python-gdal python3-gdal