首页 > 解决方案 > 如何在 alpine 中使用来自 apk 的 python 包

问题描述

我安装了 py3-lxml(和 py3-pyldap)并期望 python(3) 能够导入库。但是没有找到该模块。我哪里错了?

docker run -it python:3-alpine
/ # apk --no-cache --update add py3-lxml py3-pyldap
/ # python3
Python 3.9.6 (default, Jun 29 2021, 19:36:19)
[GCC 10.3.1 20210424] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'lxml'
>>> import ldap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'ldap'

标签: pythonldaplxmlalpine

解决方案


所以基本上你有两种可能性:

  • 要么您使用裸alpine映像,而且不仅安装py3-lxmlpy3-pyldap通过 apk,而且还安装python3它本身。
  • 或者您自己使用python:3-alpine和安装附加软件包,如下所示:
apk add --no-cache --virtual .build-deps build-base # only build deps
apk add --no-cache openldap-dev libxml2-dev libxslt-dev # runtime deps
pip install --no-cache-dir -r lxml python-ldap
apk del .build-deps # delete build deps

或者,引用alpines包的维护者Jakubpy3-pyldap的话(非常感谢您的快速响应):

嗨,不要将从任何来源安装的 python 与 Alpine python 包混合。只需用干净的 alpine:3.14 映像替换 python:3-alpine 并使用 apk 安装 python3。


推荐阅读