Python 3.x 如何在执行时在Singularity容器中设置Python别名?
我一直在尝试在容器中设置一些别名,但未能成功。在构建容器时,我将Python 3.x 如何在执行时在Singularity容器中设置Python别名?,python-3.x,bash,docker,alias,singularity-container,Python 3.x,Bash,Docker,Alias,Singularity Container,我一直在尝试在容器中设置一些别名,但未能成功。在构建容器时,我将别名python3=python3.6放在%post中,一切正常;别名已正确声明,并在整个容器构建过程中使用 但是,在构建容器并使用singularity exec执行它之后,%environment或%runscript中的别名声明不起作用。我还尝试将别名声明命令放在容器中的bash脚本中,并运行bash脚本,但它仍然不起作用。基本上,我认为我看起来像是Docker for Singularity中的入口点。有人知道我做错了什么,
别名python3=python3.6
放在%post
中,一切正常;别名已正确声明,并在整个容器构建过程中使用
但是,在构建容器并使用singularity exec
执行它之后,%environment
或%runscript
中的别名声明不起作用。我还尝试将别名声明命令放在容器中的bash脚本中,并运行bash脚本,但它仍然不起作用。基本上,我认为我看起来像是Docker for 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
虽然在使用容器时无法为
exec
模式设置别名,但是可以使用以下脚本为run
模式设置别名:
%runscript
alias python3='python3.6'
eval ${@}
exec
和run
之间的区别在于exec
直接运行您编写的命令,但run
将您编写的任何内容传递给您在%runscript
中编写的脚本
docker world中有一个入口点脚本,在singularity@IjazKhan是的,我想我正在寻找类似的答案不,我没有,但我删除了我的答案,只是因为它没有完成。你知道是否可以为
shell
模式设置别名吗?