簡體   English   中英

apk python 軟件包未安裝在 Alpine Docker 圖像中

[英]apk python packages not installing in Alpine Docker Image

我有一個 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'

Alpine 使用此路徑/usr/lib/python3.7/site-packages安裝了 python 包,只需在容器內運行命令,您將看到 package 已安裝。 您只需將此路徑添加到 python 搜索路徑即可。

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

蟒蛇路徑

增加模塊文件的默認搜索路徑。 格式與 shell 的 PATH 相同:一個或多個由 os.pathsep 分隔的目錄路徑名(例如 Unix 上的冒號或 Windows 上的分號)。 不存在的目錄會被靜默忽略。

除了普通目錄之外,單獨的 PYTHONPATH 條目可以引用包含純 Python 模塊(源代碼或編譯形式)的 zip 文件。 擴展模塊不能從 zip 文件中導入。

默認搜索路徑取決於安裝,但通常以prefix/lib/pythonversion (參見上面的 PYTHONHOME)。 它始終附加到PYTHONPATH

如上文接口選項中所述,將在PYTHONPATH前面的搜索路徑中插入一個附加目錄。 搜索路徑可以在 Python 程序中作為變量sys.path進行操作。

python envvar PYTHONPATH

更新:

要使用 pip 安裝,您需要使用-m

當使用-m module-name調用時,給定模塊位於Python 模塊路徑上並作為腳本執行。

python3-命令行

你可以測試

RUN apk add --no-cache cython3
ENV PYTHONPATH /usr/lib/python3.7/site-packages
RUN python -m pip install requests
RUN python -m pip list
#import test
RUN python -c "import requests"

您可以使用pip安裝cython

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"]

暫無
暫無

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

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