如何在运行中的Docker容器内安装libpostal并解决pip安装报错
在运行中的Docker容器内安装libpostal的解决方案
问题原因
pip install postal编译失败是因为Python的postal包是libpostal C库的绑定,必须先在系统层面安装完整的libpostal依赖(包括头文件和编译好的库);而pip install libpostal无效是因为libpostal本身是C库,没有对应的PyPI包,Python端的绑定包名为postal。
临时解决方案(针对运行中的容器)
- 进入运行的Jupyter容器:
docker exec -it jupyter bash - 安装编译libpostal所需的系统依赖(基于Debian/Ubuntu镜像):
sudo apt update && sudo apt install -y build-essential cmake libcurl4-openssl-dev autoconf automake libtool pkg-config git - 编译安装libpostal C库:
git clone https://github.com/openvenues/libpostal.git cd libpostal ./bootstrap.sh ./configure --datadir=/usr/local/share/libpostal make -j4 && sudo make install sudo ldconfig - 安装Python的
postal绑定包:pip install postal
持久化解决方案(修改镜像,避免重复操作)
如果需要每次启动容器都能直接使用libpostal,建议构建自定义镜像:
- 在项目根目录创建
Dockerfile:FROM jupyter/pyspark-notebook:latest USER root # 安装系统编译依赖并清理缓存 RUN apt update && apt install -y build-essential cmake libcurl4-openssl-dev autoconf automake libtool pkg-config git && \ rm -rf /var/lib/apt/lists/* # 编译安装libpostal并清理临时文件 RUN git clone https://github.com/openvenues/libpostal.git && \ cd libpostal && \ ./bootstrap.sh && \ ./configure --datadir=/usr/local/share/libpostal && \ make -j4 && \ make install && \ ldconfig && \ cd .. && rm -rf libpostal USER jovyan # 安装Python绑定包 RUN pip install postal - 修改
docker-compose.yml,替换镜像为本地构建:version: '3.9' services: jupyter: container_name: jupyter build: . volumes: - .:/home/jovyan/ ports: - "8888:8888" - 启动容器:
docker-compose up --build -d
内容的提问来源于stack exchange,提问作者Sigma
相关产品推荐
相关产品推荐

