Запустите подпроцесс python внутри контейнера Singularity

#python-3.x #subprocess #singularity-container

#python-3.x #подпроцесс #сингулярность-контейнер

Вопрос:

Я пытаюсь запустить подпроцесс python внутри контейнера Singularity следующим образом:

 singularity exec image_name python python_task.py
  

И внутри python_task.py он вызывает эту функцию с помощью cmd:

 def run_shell_cmd(cmd):
    p = subprocess.Popen(
        ['/bin/bash', '-o', 'pipefail'],  # to catch error in pipe
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        universal_newlines=True,
        preexec_fn=os.setsid)  # to make a new process with a new PGID
    pid = p.pid
    pgid = os.getpgid(pid)
    log.info('run_shell_cmd: PID={}, PGID={}, CMD={}'.format(pid, pgid, cmd))
    t0 = get_ticks()
    stdout, stderr = p.communicate(cmd)
    rc = p.returncode
    t1 = get_ticks()
    err_str = (
        'PID={pid}, PGID={pgid}, RC={rc}, DURATION_SEC={dur:.1f}n'
        'STDERR={stde}nSTDOUT={stdo}'
    ).format(
        pid=pid, pgid=pgid, rc=rc, dur=t1 - t0, stde=stderr.strip(), stdo=stdout.strip()
    )
    
    if rc:
        # kill all child processes
        try:
            os.killpg(pgid, signal.SIGKILL)
        except:
            pass
        finally:
            raise Exception(err_str)
    else:
        log.info(err_str)
    return stdout.strip('n')
  

Но я получаю эту ошибку / исключение

 Exception: PID=23793, PGID=23793, RC=255, DURATION_SEC=0.1
STDERR=WARNING: Could not lookup the current user's information: user: unknown userid 29931
FATAL:   Couldn't determine user account information: user: unknown userid 29931
  

Любые предложения о том, как это исправить? Я думаю, что идентификатор пользователя 29931 отсутствует внутри контейнера, что приводит к этой ошибке. Но я не уверен, как это исправить.

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

1. Я не могу воспроизвести это с docker://python:3.8-slim помощью изображения. Не могли бы вы обновить свой вопрос с помощью изображения singularity, которое вы используете, и вашего идентификатора пользователя (вывода id -u ?) Кроме того, в какой операционной системе вы работаете?