[英]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
進行操作。
更新:
要使用 pip 安裝,您需要使用-m
。
當使用
-m module-name
調用時,給定模塊位於Python 模塊路徑上並作為腳本執行。
你可以測試
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.