Python 如何使用奇点图像运行jupyter笔记本?
我已经建立了一个奇点图像(jupyter.sif),其中包含了最新的anaconda版本,我想用它来运行一个jupyter笔记本 我想运行这样的程序:Python 如何使用奇点图像运行jupyter笔记本?,python,jupyter-notebook,jupyter,singularity-container,Python,Jupyter Notebook,Jupyter,Singularity Container,我已经建立了一个奇点图像(jupyter.sif),其中包含了最新的anaconda版本,我想用它来运行一个jupyter笔记本 我想运行这样的程序: singularity exec --bind /path/outside/image/:/path/inside/image/ jupyter.sif jupyter notebook --notebook-dir=/path/to/dir --no-browser --ip=127.0.0.1 ##### ##### 基本上,只需启动一个普
singularity exec --bind /path/outside/image/:/path/inside/image/ jupyter.sif jupyter notebook --notebook-dir=/path/to/dir --no-browser --ip=127.0.0.1
#####
#####
基本上,只需启动一个普通的jupyter笔记本,它将使用singularity映像中安装的python版本和软件包。理想情况下,笔记本将读取和写入图像外部的文件(因此我指定了绑定路径)
但是,当我运行上述命令时,会出现以下错误:
#####
回溯(最近一次调用上次):文件
“/opt/conda/lib/python3.7/site packages/traitlets/traitlets.py”,第行
528,在get
value=obj.\u trait\u values[self.name]键错误:“runtime\u dir”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/opt/conda/bin/jupyter notebook”,第11行,在
sys.exit(main())
文件
“/opt/conda/lib/python3.7/site packages/jupyter_core/application.py”,
第266行,在launch_实例中
返回super(JupyterApp,cls)。启动_实例(argv=argv,**kwargs)
文件
“/opt/conda/lib/python3.7/site packages/traitlets/config/application.py”,
第657行,在launch_实例中
应用程序初始化(argv)
文件“”,第2行,在初始化中
文件
“/opt/conda/lib/python3.7/site packages/traitlets/config/application.py”,
第87行,在catch_config_错误中
返回方法(应用程序、*args、**kwargs)
文件
“/opt/conda/lib/python3.7/site packages/notebook/notebookapp.py”,第行
1626年,美国
self.init_可配置文件()
文件
“/opt/conda/lib/python3.7/site packages/notebook/notebookapp.py”,第行
1319,在init_可配置文件中
connection\u dir=self.runtime\u dir
文件
“/opt/conda/lib/python3.7/site packages/traitlets/traitlets.py”,第行
556,在获取
返回self.get(obj、cls)
文件
“/opt/conda/lib/python3.7/site packages/traitlets/traitlets.py”,第行
535,进站
value=self.\u验证(obj,dynamic\u default())
文件
“/opt/conda/lib/python3.7/site packages/jupyter_core/application.py”,
第99行,运行时目录默认值
确保目录存在(rd,模式=0o700)
文件
“/opt/conda/lib/python3.7/site packages/jupyter_core/utils/init.py”,
第13行,确保目录存在
os.makedirs(路径,模式=模式)
makedirs中的文件“/opt/conda/lib/python3.7/os.py”,第211行
makedirs(head,exist\u ok=exist\u ok)
makedirs中的文件“/opt/conda/lib/python3.7/os.py”,第211行
makedirs(head,exist\u ok=exist\u ok)
makedirs中的文件“/opt/conda/lib/python3.7/os.py”,第221行
mkdir(名称、模式)
OSError:[Errno 30]只读文件系统:'/run/user'
#####
我假设这是因为笔记本试图在图像中写入内容,并且由于我不以sudo的方式运行图像(我不想这样做),而且我也没有指定--writable(在执行图像时可写)(也不想这样做),它抱怨无法在图像中写入内容
有没有一种方法可以“告诉”图像在我的主目录中而不是在图像中读写文件
谢谢我刚刚遇到了同样的问题,这似乎已经为我解决了:将/run/user inside映射到容器外部的工作目录(或您选择的目录)。对于您的情况,可能意味着:
singularity exec --bind /path/outside/image/:/path/inside/image/ --bind $PWD:/run/user jupyter.sif jupyter notebook --notebook-dir=/path/to/dir --no-browser --ip=127.0.0.1
在我的例子中,这样运行时,会创建一个文件夹
1000
,这对奇点实例很有效,例如:
singularity instance.start --writable --contain --bind shared:/shared sandbox/ jupyter