我用这个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版本的问题。
1条答案
按热度按时间xsuvu9jc1#
当你用
RUN pip install disba[full] --user
安装disba时,你可能会将它安装在一个与Singularity镜像将要使用的用户帐户不同的用户帐户中。我将不使用
--user
安装,以全局安装该软件包。