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 小时前
MNE-Python 第9天学习笔记:源定位基础
python·eeg·mne·脑电数据处理
Daydream.V2 小时前
Python Flask超全入门实战教程|从零基础到项目部署
大数据·python·flask
databook3 小时前
Manim物理模拟:别自己写欧拉了!
python·数学·动效
сокол3 小时前
【网安-Web渗透测试-靶场系列】AWD-Platform(ctf-hub)
linux·服务器·ubuntu·网络安全·docker
香蕉鼠片4 小时前
Python进阶学习
开发语言·python
亚亚的学习和分享5 小时前
python练习:人生模拟器(简易版)
python
全糖可乐气泡水5 小时前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
LeocenaY5 小时前
搜集的一些测开面试题
开发语言·python
嗝o゚5 小时前
昇腾CANN ge 仓的图优化 Pass:哪些 Pass 真正影响推理性能
pytorch·python·深度学习·cann·ge-pass
深度先生6 小时前
Conda 全面讲解——数据科学家的标配工具
python