不同机器上的奇异图像行为不同?

问题描述

我尝试在远程计算机上运行基于python3的奇点映像,但遇到以下错误,这是其他计算机无法做到的:

singularity exec --nv --no-home --bind data/:/data/ image/ scripts/train.sh
+ singularity exec --nv --no-home --bind data/:/data/ image/ scripts/train.sh
WARNING: skipping mount of sysfs: no such file or directory
scripts/train.sh: line 8: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8): No such file or directory
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = '/usr/local/bin/python'
  program name = '/usr/local/bin/python'
  isolated = 0
  environment = 1
  user site = 1
  import site = 1
  sys._base_executable = '/usr/local/bin/python'
  sys.base_prefix = '/usr/local'
  sys.base_exec_prefix = '/usr/local'
  sys.executable = '/usr/local/bin/python'
  sys.prefix = '/usr/local'
  sys.exec_prefix = '/usr/local'
  sys.path = [
    '/usr/local/bin/python','/usr/local/lib/python38.zip','/usr/local/lib/python3.8','/usr/local/lib/python3.8/lib-dynload',]
Fatal Python error: init_fs_encoding: Failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
LookupError: no codec search functions registered: can't find encoding

Current thread 0x00007f628ee51740 (most recent call first):
<no Python frame>

我的定义文件如下:

Bootstrap: docker
From: python:3

%post
    apt-get update  -y
    apt-get install -y git
    pip install torch torchvision
    git clone https://github.com/NVIDIA/apex
    cd apex
    pip install -v --no-cache-dir ./

%runscript
    echo "Running nnunet container..."

如何解决错误? 为什么图像在我的不同机器上的表现方式不一样?

解决方法

这通常是由于环境变量在没有通知的情况下传递给容器或没有传递给容器。为确保这不是问题,可以使用-e--cleanenv。这样可以防止将没有以SINGULARITYENV_为前缀的任何变量加载到容器中。

也就是说,警告WARNING: skipping mount of sysfs: no such file or directory也涉及到:奇点无法将/sys挂载到映像中,因为主机服务器上不存在奇点。那个特定的python错误似乎也特定于Windows10。即使WSL2具有魔力,奇点目前也不支持Windows。