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/*

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


相关推荐
北珣.1 小时前
docker镜像操作
运维·docker·容器·镜像
conkl1 小时前
Python中的鸭子类型:理解动态类型的力量
开发语言·python·动态·鸭子类型·动态类型规划
故事挺秃然1 小时前
Python异步(Asyncio)(一)
服务器·网络·python
大飞记Python1 小时前
【2025全攻略】PyCharm专业版 / 社区版如何打开.db 数据库文件
数据库·python·sql·pycharm
坚持就完事了1 小时前
数据结构之链表
数据结构·python·算法·链表
Sally_xy1 小时前
安装 Docker
java·docker·容器
木头左1 小时前
自动化超参搜索框架在PCA参数调优中的应用
python
apihz1 小时前
域名注册状态查询免费API接口详细教程
android·服务器·网络·python·tcp/ip
❥ღ Komo·1 小时前
K8S Deployment 详解与实战指南
docker·容器·kubernetes