奇点:Python包不可用,即使它在docker中

jvidinwx  于 2023-04-29  发布在  Docker
关注(0)|答案(1)|浏览(142)

我用这个docker文件构建了一个docker镜像:

FROM ubuntu:22.04

RUN apt-get update
RUN apt-get upgrade -y

# Install python: 
RUN apt-get install software-properties-common -y
RUN add-apt-repository ppa:deadsnakes/ppa -y
RUN apt-get update 
RUN DEBIAN_FRONTEND=noninteractive apt-get install python3.11 -y
RUN python3 --version
RUN apt-get upgrade

# Install pip: 
RUN apt-get install python3-pip -y 

# Install disba (https://github.com/keurfonluu/disba/): 
RUN pip install disba[full] --user

disba是一个Python包,用于表面波色散建模,我需要这个包)。
我注意到,当我尝试从docker容器导入python3中的disba时,它可以工作,但是当我尝试在singularity(安装在我们的HPC集群上)中做同样的事情时,它会抱怨:

Singularity> python3
Python 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import disba
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'disba'

(The我构建奇点容器的方法是将我的docker镜像推送到dockerhub,然后执行

singularity build <container_name> docker://<docker_url>

后面跟着

singularity run <container_name>

不幸的是,我不明白为什么我不能导入我需要的模块。我会很感激任何提示或想法
编辑:评论@Henrique Andrade的答案:i)当我在奇点中输入python3.11,然后尝试导入disba时,错误仍然存在。ii)同样在docker中,当我键入python3时,Python 3.10.6已经启动,但是导入disba可以工作,所以这似乎不是Python版本的问题。

xsuvu9jc

xsuvu9jc1#

当你用RUN pip install disba[full] --user安装disba时,你可能会将它安装在一个与Singularity镜像将要使用的用户帐户不同的用户帐户中。
我将不使用--user安装,以全局安装该软件包。

相关问题