簡體   English   中英

嘗試在Docker容器內進行點狀安裝時出現OSError

[英]OSError when trying to pip install shapely inside docker container

找不到庫geos_c或加載其任何變體['libgeos_c.so.1','libgeos_c.so']

使用python:3.5.1映像,我正在嘗試運行一個容器,該容器除其他外還將其安裝在requirements.txt中。 當Docker容器嘗試正確安裝時,出現上述錯誤。

運行apt-get install libgeos-dev

我看到的是嘗試搜索問題的內容,但返回無法找到軟件包libgeos-dev

摘要:

預期的條件:在require.txt文件中包含形狀會導致在構建Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']容器時已形狀正確地安裝ins實際條件:在構建期間收到錯誤消息Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']

重現步驟:

使用docker-compose進行構建

碼頭工人,compose.yml:

app:
        build: ${APP_REPO}

Dockerfile:

FROM python:3.5.1-onbuild

Requirements.txt:

shapely

(簡化為試圖隔離問題。)

對於高山,只需運行以下Docker命令:

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

這將以形狀正確的方式安裝,並具有與geo和C相關的所有適當依賴關系(對於高山形狀)

我從以下位置找到了解決方案: 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

並順利進行安裝。

它偶爾會停止進行構建,但主要問題已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM