python-3.x - 如何在执行时在Singularity容器中设置Python别名?

标签 python-3.x bash docker alias singularity-container

我一直在尝试在我的容器中设置一些别名,但未能成功完成。在构建容器时,我将alias python3=python3.6放入%post中,一切正常。别名已正确声明,并在整个容器构建过程中使用。

但是,在构建容器并执行它之后,使用singularity exec%environment%runscript中的别名声明不起作用。我还尝试了将别名声明命令放在容器中的bash脚本中并运行bash脚本,但是它仍然无法正常工作。基本上,我想我看起来像Docker中的 ENTRYPOINT 一样。有谁知道我在做什么错以及如何在容器中设置别名?

我正在使用奇点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 ${@}
execrun之间的区别在于exec运行您直接编写的命令,而run将您编写的所有内容传递给您在%runscript中编写的脚本。

Source

关于python-3.x - 如何在执行时在Singularity容器中设置Python别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52935857/

相关文章:

Bash补全函数: limit matches via glob

python - 什么是 python 'requests' api 等效于我的 shell 脚本 curl 命令?

python - 使用 Eclipse + Pydev 在 docker 容器中远程调试 Odoo/Python 的更好方法?

python - 在只读 Docker 容器中运行 python

python-3.x - 队列的等价arg 'durable'

python 3.6 JsonResponse 问题

linux - 检查主板/BIOS/UEFI和CPU是否支持VT-D/IOMMU

macos - 将标签推送到 Artifactory 中的私有(private) docker 注册表从 mac 失败

python - 使用类对象从外部文件创建 sqlite 数据库

python - joblib 中的 batch_size 和 pre_dispatch 到底是什么意思