Разное поведение изображения сингулярности на разных машинах?

#python #singularity-container

#python #сингулярность-контейнер

Вопрос:

Я пытаюсь запустить свой образ Singularity на основе 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..."
  

Как я могу исправить эту ошибку?
Почему изображение не ведет себя одинаково на моих разных машинах?

Ответ №1:

Часто это происходит из-за того, что переменные среды передаются или не передаются в контейнер незаметно. Чтобы убедиться, что это не проблема, вы можете использовать -e или --cleanenv . Это предотвратит загрузку в контейнер любых переменных, не имеющих префикса SINGULARITYENV_ .

Тем не менее, предупреждение WARNING: skipping mount of sysfs: no such file or directory также касается: singularity не удалось смонтировать /sys в образ, потому что он не существует на хост-сервере. Эта конкретная ошибка python также, по-видимому, характерна для Windows 10. Singularity в настоящее время не поддерживает Windows, даже с волшебством WSL2.

Комментарии:

1. Я пробовал с --cleanenv опцией, но у меня все еще та же проблема :/. Примечание: хост-системой является Debian GNU / Linux 8 (jessie) , а не Windows.

2. упс, может быть, это связано с тем, что моя песочница с изображениями неполная (возможно, была проблема, когда я ее загружал).