apk python软件包未安装在Alpine Docker Image中

问题描述 投票:0回答:2

我有一个dockerfile如下:

FROM python:3.7.5-alpine3.10

RUN apk update

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN apk add --no-cache cython3

CMD [ "sh", "ls"]

当我用docker run -it --rm mycontainer /bin/sh cython进入容器时,似乎未安装。我想念什么?

/usr/src/app # which python
/usr/local/bin/python
/usr/src/app # python
Python 3.7.5 (default, Oct 21 2019, 20:13:45) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cython
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'cython'
python python-3.x docker apk alpine
2个回答
0
投票

您可以使用cython安装pip

FROM python:3.7.5-alpine3.10

RUN apk update

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

RUN apk add --no-cache gcc musl-dev
RUN pip install cython

CMD [ "sh", "ls"]

0
投票

使用此路径/usr/lib/python3.7/site-packages高山安装的python pacakges,只需在容器内运行命令,您将看到软件包已安装。您只需要将此路径添加到python搜索路径即可。

RUN apk add --no-cache cython3
ENV PYTHONPATH /usr/lib/python3.7/site-packages

PYTHONPATH

建议模块文件的默认搜索路径。格式是与Shell的PATH相同:一个或多个目录路径名,以os.pathsep(例如Unix上的冒号或Windows上的分号)。不存在的目录将被静默忽略。

除了普通目录外,各个PYTHONPATH条目可能请参阅包含纯Python模块的zipfile(以源代码或编译表格)。无法从zip文件导入扩展模块。

默认搜索路径取决于安装,但通常以prefix/lib/pythonversion开头(请参见上面的PYTHONHOME)。它是始终附加到PYTHONPATH

另外的目录将插入到前面的搜索路径中如上文“接口选项”下所述。搜索路径可以在Python程序中作为变量进行操作PYTHONPATH

sys.path

更新:

要使用pip安装,您需要使用python envvar PYTHONPATH

[用-m调用时,给定的模块位于Python模块路径并作为脚本执行。

-m module-name

您可以测试

python3-cmdline
© www.soinside.com 2019 - 2024. All rights reserved.