python - Dockerfile 努力安装 Python Geopandas 模块

标签 python docker ubuntu

我有一个 dockerfile,我试图在其中使用所需的 python 模块构建一个容器。
请参阅下面的 dockerfile 以了解我尝试安装的方式和模块:

FROM ubuntu:bionic

ENV ROOTDIR /usr/local/
ENV GDAL_VERSION 2.4.1
ENV OPENJPEG_VERSION 2.3.0
ENV CURL_CA_BUNDLE /etc/ssl/certs/ca-certificates.crt

# Load assets
WORKDIR $ROOTDIR/

ADD http://download.osgeo.org/gdal/${GDAL_VERSION}/gdal-${GDAL_VERSION}.tar.gz $ROOTDIR/src/
ADD https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz $ROOTDIR/src/openjpeg-${OPENJPEG_VERSION}.tar.gz

# Install basic dependencies
RUN apt-get update -y && apt-get install -y \
    software-properties-common \
    build-essential \
    python-dev \
    python3-dev \
    python-numpy \
    python3-numpy \
    python3-pyproj \
    libspatialite-dev \
    sqlite3 \
    libpq-dev \
    libcurl4-gnutls-dev \
    libproj-dev \
    libxml2-dev \
    libgeos-dev \
    libnetcdf-dev \
    libpoppler-dev \
    libspatialite-dev \
    libhdf4-alt-dev \
    libhdf5-serial-dev \
    bash-completion \
    cython \
    cmake

# Compile and install OpenJPEG
RUN cd src && tar -xvf openjpeg-${OPENJPEG_VERSION}.tar.gz && cd openjpeg-${OPENJPEG_VERSION}/ \
    && mkdir build && cd build \
    && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$ROOTDIR \
    && make && make install && make clean \
    && cd $ROOTDIR && rm -Rf src/openjpeg*

# Compile and install GDAL
RUN cd src && tar -xvf gdal-${GDAL_VERSION}.tar.gz && cd gdal-${GDAL_VERSION} \
    && ./configure --with-python --with-spatialite --with-pg --with-curl --with-openjpeg \
    && make -j $(nproc) && make install && ldconfig \
    && apt-get update -y \
    && cd $ROOTDIR && cd src/gdal-${GDAL_VERSION}/swig/python \
    && python3 setup.py build \
    && python3 setup.py install \
    && apt-get remove -y --purge build-essential \
      python-dev \
      python3-dev \
    && cd $ROOTDIR && rm -Rf src/gdal*


# install Vim
RUN apt-get -y install vim

# Install Pip3 and required python modules
RUN apt-get -y install python3-pip

RUN pip3 install rasterio &&\
    pip3 install rdp &&\
    pip3 install gdal2tiles&&\
    pip3 install awscli &&\
    pip3 install pandas &&\
    pip3 install boto3 &&\
    pip3 install requests &&\
    pip3 install shapely &&\
    pip3 install geopandas &&\   
    pip3 install math 

但是,它似乎已经到了 geopandas 模块,然后我遇到了这个错误:
Collecting pyproj>=2.2.0 (from geopandas)
  Downloading https://files.pythonhosted.org/packages/2c/12/7a8cca32506747c05ffd5c6ba556cf8435754af0939906cbcc7fa5802ea3/pyproj-3.0.1.tar.gz (168kB)
    Complete output from command python setup.py egg_info:
    ERROR: Cython.Build.cythonize not found. Cython is required to build pyproj.

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vtfufrfs/pyproj/
有没有人知道如何克服这个问题?

最佳答案

您的 Python3 环境缺少 Cython 包。添加行 pip3 install cythonpip3 install geopandas 之前线。
您还需要升级您的 pip 版本。
并且直接从 Python3 解释器而不是 pip3 包装器使用 pip 更方便。所以我会去重构你最后的RUN像这样阻止:

RUN \
   python3 -m pip install --upgrade pip \
   && python3 -m pip install \
        cython \
        rasterio \
        rdp \
        gdal2tiles \
        awscli \
        pandas \
        boto3 \
        requests \
        shapely \
        geopandas

关于python - Dockerfile 努力安装 Python Geopandas 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72459439/

相关文章:

python - 有效使用 ttk (tk 8.5) Notebook 小部件(选项卡滚动)

docker - 如何在桥接网络上获取容器的 ip

mysql - Ubuntu 远程连接 Mysql - 绑定(bind)地址失败

python - 为什么 "append(' w')"返回无?

python - 如何将数据结构(例如字典)从单独的文件导入或包含到 Python 文件中

python - 重命名数据框对象

amazon-web-services - docker 容器中的“aws configure”将不使用环境变量或配置文件

java - Maven docker缓存依赖

python - Spark worker 不断删除和添加执行程序

php - Cronjob 不工作 Ubuntu 服务器