Как установить псевдоним Python в контейнере Singularity при выполнении? - PullRequest
0 голосов
/ 22 октября 2018

Я пытался установить псевдонимы в своем контейнере, но я не смог сделать это успешно.При сборке контейнера я помещаю alias python3=python3.6 в %post и все работает нормально;псевдоним правильно объявлен и используется в процессе построения контейнера.

Однако после того, как контейнер собран и я его выполняю, используя singularity exec, объявление псевдонима в %environment или %runscript не делаетРабота.Я также попытался поместить команду объявления псевдонима в сценарий bash в контейнере и запустить сценарий bash, но он все равно не работает.В принципе, я думаю, что я выгляжу как ENTRYPOINT в Docker для Singularity.Кто-нибудь знает, что я делаю неправильно и как я могу установить псевдонимы внутри контейнера?

Я использую Singularity 2.6.

Вот файл определения, который я использую:

BootStrap: docker
From: ubuntu:16.04

%post
# Set up some required environment defaults
apt-get -y update && apt-get -y install software-properties-common && yes '' | add-apt-repository ppa:deadsnakes/ppa
apt-get -y update && apt-get -y install make \
                                        cmake \
                                        vim \
                                        curl \
                                        python3.6 \
                                        python3.6-dev \

curl https://bootstrap.pypa.io/get-pip.py | python3.6

alias python3=python3.6 #Here's where I declare the alias

python3 -m pip install -U pip
python3 -m pip install --upgrade pip
python3 -m pip install -U setuptools
python3 -m pip install  scipy \
                        numpy \
                        transforms3d \
                        matplotlib \
                        Pillow

# I also create a file containing a bash script to declare the alias
cd /
mkdir bash_aliases && cd bash_aliases
echo "alias python3=python3.6">bash_aliases.sh
chmod +x bash_aliases.sh


%runscript
alias python3=python3.6

# bash /bash_aliases/bash_aliases.sh # You may uncomment this as well

1 Ответ

0 голосов
/ 04 ноября 2018

Хотя невозможно установить псевдоним для режима exec при использовании контейнера, однако можно сделать это для режима run, используя следующий скрипт:

%runscript
    alias python3='python3.6'
    eval ${@}

Разницамежду exec и run означает, что exec запускает команду, которую вы пишете напрямую, но run передает все, что вы пишете, сценарию, который вы написали в %runscript.

Source

...