docker容器内部安装python和numpy的方法

环境描述:

首先在linux的路径下存放了python脚本,路径如下:/data1/nfs/data/lifesci-ststem-moe-pvc-6958cbf5-9501-4d01-9808-0b53df73cab0/moe2024.0601/bin/epitope/sequence这个目录为执行目录。

在当前目录下执行命令行:python3 /data1/nfs/data/lifesci-ststem-moe-pvc-6958cbf5-9501-4d01-9808-0b53df73cab0/moe2024.0601/bin/epitope/sequence/generate_peptides_fasta.py -l 10 -n 100 -m diverse -p 12 --avoid C -s 42 -o /data1/nfs/data/lifesci-ststem-moe-pvc-6958cbf5-9501-4d01-9808-0b53df73cab0/moe2024.0601/bin/epitope/sequence/output2.fasta,能够运行该脚本并得到输出文件。

Java程序运行在docker容器里面,yml文件指定执行目录为:/opt/moe/moe2024.0601/bin/,将实际执行目录挂载到容器的执行目录。

遇到的问题:

第一、首先在linux的执行目录下运行命令,报错了:File "/data1/nfs/data/lifesci-ststem-moe-pvc-6958cbf5-9501-4d01-9808-0b53df73cab0/moe2024.0601/bin/epitope/sequence/generate_peptides_fasta.py", line 3, in <module> import numpy as np ,python文件里用到了numpy 包,但实际没有安装。

使用命令安装:pip3 install numpy

成功运行。Python命令调试完毕,开始在Java程序里面拼接参数路径并调用该命令:

这里又报了numpy 找不到的错。问题就出在这里:
Linux 主机上 Python 已经装了 numpy,
但是容器里的 Python 和宿主机的 Python 是两个环境,容器内的 Python 环境并没有装 numpy ,
即使这两个目录通过挂载指向同一个文件系统路径(/data1/... ↔ /opt/moe/...)所以容器里报错 ModuleNotFoundError: No module named 'numpy'。

环境 路径 状态
宿主机(Linux 本机) /data1/nfs/data/.../epitope/sequence ✅ Python 有 numpy
容器(Java 运行环境) /opt/moe/moe2024.0601/bin/epitope/sequence ❌ Python 没有 numpy

Python 的包(例如 numpy)是安装在 Python 环境自身的 site-packages 目录下的。

例如:/usr/lib/python3.9/site-packages/numpy

这类路径在宿主机和容器中往往不同,也不会自动挂载到一起。

所以容器看不到宿主机安装的库。

这里有两种方法解决:

方法一:在容器内部安装 numpy

进入容器:

java 复制代码
docker exec -it <your_container_id> bash

然后执行:

java 复制代码
pip3 install numpy

如果容器的 Python 环境没有 pip:

java 复制代码
apt-get update && apt-get install -y python3-pip
pip3 install numpy

安装完成后,再执行:

java 复制代码
python3 -c "import numpy; print(numpy.__version__)"

确认容器内能正确导入 numpy。

缺点是一旦这个容器被销毁并重新创建(比如重启 Pod、重新部署镜像),

那些你在容器内安装的 Python 包(例如 numpy)就会全部消失。

因为容器的文件系统是临时的、可丢弃的层。执行pip install numpy

安装实际上写入容器层(镜像运行时的可写层)。

当容器销毁时,这个层就没了。

下次启动相同镜像时,相当于"全新环境",什么也没有了。

方法二:在镜像里预装 numpy

在 Dockerfile 里添加命令:

java 复制代码
RUN apt-get update && \
    apt-get install -y python3 python3-pip && \
    pip3 install --no-cache-dir numpy && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

可以看到日志文件已经生成:


相关推荐
Angel Q.6 分钟前
特征提取 | DINO 到 DINOv3
图像处理·python
不如语冰35 分钟前
AI大模型入门-pytorch-张量2 tensor创建
python
NPE~1 小时前
[AI]Agent开发——ADK框架使用
人工智能·python·ai·教程·adk·agent开发
矮个史蒂芬1 小时前
统计verilog .v文件中output 的bit数
python
gwf2161 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
爱吃提升2 小时前
python 分布式爬虫、爬虫合规与综合实战项目
分布式·爬虫·python
审小匠OpenCPAi2 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
码上上班2 小时前
docker课程
java·docker·容器
元Y亨H3 小时前
Pandas 解析 Excel 导致的内存溢出(MemoryError)
python·excel
金銀銅鐵3 小时前
[Python] 用 turtle 来绘制瑞典国旗
python