尝试在docker容器内部进行pip安装时出现OSError

时间:2016-09-07 19:44:42

标签: python docker-compose shapely geos

无法找到库geos_c或加载其任何变体[' libgeos_c.so.1',' libgeos_c.so']

使用python:3.5.1图像我正在尝试运行一个容器,其中包括它在requirements.txt中的形状安装。当docker容器尝试以形状安装时,我得到上述错误。

运行apt-get install libgeos-dev

是我看到尝试搜索问题但返回无法找到包libgeos-dev

的东西

摘要:

预期条件:在构建docker容器时,在requirements.txt文件中包含一些形状结果 实际情况:在构建Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']

期间收到错误消息

重现的步骤:

使用docker-compose构建

Docker-compose.yml:

app:
        build: ${APP_REPO}

Dockerfile:

FROM python:3.5.1-onbuild

Requirements.txt:

shapely

(简化以尝试隔离问题。)

2 个答案:

答案 0 :(得分:2)

对于高山,只需运行以下Docker命令:

RUN apk add --no-cache \
gcc \
libc-dev \
geos-dev \
&& pip install shapely

对于所有与形状有关的地理环境和与C相关的依存关系,这将对所有形状进行适当的安装

答案 1 :(得分:1)

我找到了一个解决方案:https://github.com/calendar42/docker-python-geos/blob/master/Dockerfile

ENV PYTHONUNBUFFERED 1

#### Install GEOS ####
# Inspired by: https://hub.docker.com/r/cactusbone/postgres-postgis-sfcgal/~/dockerfile/

ENV GEOS http://download.osgeo.org/geos/geos-3.5.0.tar.bz2

#TODO make PROCESSOR_COUNT dynamic
#built by docker.io, so reducing to 1. increase to match build server processor count as needed
ENV PROCESSOR_COUNT 1

WORKDIR /install-postgis

WORKDIR /install-postgis/geos
ADD $GEOS /install-postgis/geos.tar.bz2
RUN tar xf /install-postgis/geos.tar.bz2 -C /install-postgis/geos --strip-components=1
RUN ./configure && make -j $PROCESSOR_COUNT && make install
RUN ldconfig
WORKDIR /install-postgis

我在行

之前将其复制到我的dockerfile中
pip install requirements.txt

并且整体安装有效。

它偶尔会停止构建,但主要问题已经解决了。