簡體   English   中英

無法使用 docker 安裝 Geopandas 庫

[英]Not Able to Install Geopandas library using docker

我想用 airflow 構建一個 Docker 容器。該應用程序需要像 Geopandas 這樣的地理空間包。 當嘗試構建 Docker 圖像時,它在嘗試安裝 Fiona 時失敗,它說“

FileNotFoundError: [Errno 2] No such file or directory: 'gdal-config': 'gdal-config'

. 我不知道如何進一步進行。 因為我沒有在產品環境中安裝 conda,所以我只需要使用 pip 安裝 geopanda。

下面是docker文件部分:

COPY requirements.txt .
RUN pip install --user -r requirements.txt

下面是requirements.txt

apache-airflow[crypto,celery,postgres,jdbc,mysql,s3,password]==1.10.12
werkzeug<1.0.0
pytz
pyOpenSSL
ndg-httpsclient
gspread
oauth2client
pyasn1
boto3
airtable
numpy
scipy
slackclient
area
google-api-python-client
sqlalchemy
pandas
celery[redis]==4.1.1
analytics-python
networkx
zenpy==2.0.22
pyarrow
google-auth
six==1.13.0
geopandas

我嘗試在 requirements.txt 中單獨安裝所需的 package 以及同樣失敗並出現相同錯誤的 GDAL。 我想運行一個使用在 docker 上運行的 geopandas 庫的 DAG

將軟件包安裝到 docker 環境時,除了可能加快構建速度的願望外,與任何其他本地環境沒有什么不同。 因此,我將回答這個問題以突出顯示一個更快的選項,但與安裝 geopandas 有關的任何其他問題都與此相關。

我會仔細閱讀 geopandas安裝指南 它包含有關您所面臨問題的多個警告。 安裝 geopandas 的推薦方法是使用 conda。 如果不手動安裝依賴項,則無法使用 pip 安裝 geopandas,其中一些依賴項無法使用 pip 安裝。因此,您可以這樣做,但只需調用pip install geopandas將無法讓您到達那里。

我建議使用miniforge ,或者特別是因為你正在構建一個 docker 容器, mambaforge ,它的編譯速度更快。 mamba是為並行構建環境而編寫的 conda 的替代品,速度明顯更快,但往往會因更糟糕的錯誤消息而更嚴重地崩潰。 在我看來,使用 docker 容器絕對值得加速,但如果你正在努力調試某些東西,你總是可以回退到conda ,它隨mamba一起安裝。

不要安裝Anaconda ,它包括conda以及從捆綁到您的base環境的defaults通道安裝的大量軟件包,因為它會導致通道混合和匹配。 一般來說,你應該保持你的基礎環境干凈,沒有任何包,除了那些自己明確管理通道的包,例如 IDE。相反,通過使用miniforgemambaforge ,你將默認使用 conda conda-forge forge 通道。

安裝 mambaforge 然后創建一個新的 geopandas 環境:

curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh"
bash Mambaforge-$(uname)-$(uname -m).sh

# install whatever env you'd like here. try to build it in one command
# rather than iteratively installing dependencies
mamba create -n mynewenv -c conda-forge python=3.10 geopandas [other packages]

暫無
暫無

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

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