网站开发语言格式化标记语言wordpress栏目调用

当前位置: 首页 > news >正文

网站开发语言格式化标记语言,wordpress栏目调用,建筑培训网首页安全员,校园网网站的安全建设方案Singularity#xff08;八#xff09;| conda实战 8.1 conda 和容器的区别 Conda和容器技术#xff08;如Docker#xff09;都是现代软件开发和数据科学中常用的工具#xff0c;用于解决环境依赖和应用部署的问题。尽管它们有着相似的目标#xff0c;即确保应用可以在不… Singularity八| conda实战 8.1 conda 和容器的区别 Conda和容器技术如Docker都是现代软件开发和数据科学中常用的工具用于解决环境依赖和应用部署的问题。尽管它们有着相似的目标即确保应用可以在不同的环境中以一致的方式运行但它们在设计和工作方式上有着根本的不同。 Conda 的主要目的是管理不同版本的软件包和创建虚拟环境以便在同一计算机上安装和运行不同的软件包和库。它主要用于 Python 环境。 容器的主要目的是将整个应用程序及其依赖项打包成容器以确保应用程序在不同环境中的一致性和 可移植性。 隔离级别 CondaConda 提供虚拟环境通过创建独立的环境来隔离不同软件包的依赖关系但它仍运行于操作系统之上依赖于宿主机的操作系统和库尽管通过环境可以实现一定程度的隔离。 容器与宿主机共享内核在操作系统级别提供隔离每个容器都有自己的文件系统、网络配置和隔离的进程空间。 8.2 在 Singularity 容器中配置 conda 实例1构建 qiime1 容器 首先在容器中安装 miniconda wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.shchmod ux Miniconda3-latest-Linux-x86_64.sh./Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3chmod –recursive arw /opt/miniconda3 必须注意的是Singularity 容器内的进程默认以用户 root 的身份运行。这意味着 \(HOME 被设置为 /root此时Miniconda 在默认情况下会被安装到 /root/miniconda3。 然而root 目录只有 root 账号才能访问即使里面的文件有 arx 权限。即如果我们将 conda 默认装到了容器内 root 目录下我们将无法以非 root 账户使用容器内的 conda因此conda 一定不能被安装在 /root 目录下。 针对这一问题我们在使用 shell 修改容器时最好添加 --no-home 参数。 安装 qiime1 及其依赖 # source .bashrc. ~/.bashrc# 1 创建新的 conda 环境 qiime1conda create -n qiime1 python2.7conda activate qiime1# 2 安装matplotlib1.4.3的时候出现错误 The following required packages can# not be built: * freetype, pip 不能安装系统依赖手动安装系统依赖后然后安装apt-get install libfreetype6-dev libxft-devpip install matplotlib1.4.3# 3 qiime中要求biom-format2.1.4,2.2.0,但是目前版本不支持python 2.7# 手动安装2.1.4版本pip install biom-format2.1.4# 4 最后安装qiimepip install qiime# 5 检测安装是否成功print_qiime_config.py -t 实例2构建 qiime2 容器 下面还展示了一种直接利用 dockerfile 构建 qiime2 容器的方式 FROM ubuntu:20.04ENV DEBIAN_FRONTENDnoninteractiveRUN apt-get update  \    apt-get install -y \    apt-utils \    wget1.20.3-1ubuntu1 \    git1:2.25.1-1ubuntu3  \    apt-get clean  \    rm -rf rm -rf /var/lib/apt/lists/*  \    wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.8.3-Linux-x86_64.sh  \    chmod x Miniconda3-py38_4.8.3-Linux-x86_64.sh  \    ./Miniconda3-py38_4.8.3-Linux-x86_64.sh -b -p /opt/miniconda3  \    ln -s /opt/miniconda3/bin/conda /usr/bin/conda  \    wget https://data.qiime2.org/distro/core/qiime2-2020.8-py36-linux-conda.yml  \    conda env create -n qiime2-2020.8 --file qiime2-2020.8-py36-linux-conda.yml  \    conda install -y -n qiime2-2020.8 -c conda-forge -c bioconda -c qiime2 -c defaults q2cli q2templates q2-types q2-feature-table q2-metadata vsearch snakemake  \    chmod --recursive arw /opt/miniconda3  \    apt-get clean  \    rm -rf /var/lib/apt/lists/*  \    rm /qiime2-2020.8-py36-linux-conda.yml  \    rm /Miniconda3-py38_4.8.3-Linux-x86_64.shCMD [/bin/bash] 参考前面的方法创建 docker 容器后转为 singularity。或是按上文中的方法直接从 dockerfile 到 singularity。 这样singularity exec ~/dockerimage.sif conda 就能正常运行并显示 conda 的使用情况。然而如果尝试执行其他一些命令例如 singularity exec ~/dockerimage.sif conda run python -v我们会得到类似以下的错误信息 OSError: [Errno 30] Read-only file system: /opt/miniconda3/.tmp58csqy_a 这是因为除了挂载的目录外容器是不可变的。此外运行 singularity exec ~/dockerimage.sif conda activate qiime2-2020.8 也会失败 CommandNotFoundError: Your shell has not been properly configured to use conda activate. To initialize your shell, run \) conda init SHELL_NAME Currently supported shells are: bash fish tcsh xonsh zsh powershell See conda init –help for more information and options. IMPORTANT: You may need to close and restart your shell after running conda init. 即使我们已经正确修改设置了 shell我们仍然会得到以上结果。 8.3 使用 Singularity 容器中的 conda 针对以上问题我们可以提供两种可能的解决方案然而这两个都存在很强的限制目前来看我们还无法完美的解决这一问题 方式1在容器内部运行 首先进入容器 singularity shell /dockerimage.sif 然后在容器内部运行 conda init # Modifies .bashrc on your host machinesource .bashrc # Loads modified .bashrcexport LC_ALLC.UTF-8 # Sets locale to UTF-8export LANGC.UTF-8 # Sets locale to UTF-8conda activate qiime2-2020.8 # Activates the environment 这一方法在我们具有 root 权限且只需要在本地运行程序时的体验很好。然而在我们需要搭配 HPC 使用时非常困难。 方式 2直接调用特定 conda 环境中的程序执行 例如我们可以使用 def 文件创建一个包含 conda 的容器后将参数直接传递给 conda 环境中的程序 First, youll want to # get the environment YMLconda activate your_envconda env export  environment.yml Bootstrap: dockerFrom: continuumio/miniconda3%files    environment.yml%post    /opt/conda/bin/conda env create -f environment.yml%runscript    exec /opt/conda/envs/\((head -n 1 environment.yml | cut -f 2 -d  )/bin/\) 构建容器 singularity build conda.sif 此时我们可以直接调用容器内 conda 环境中的 ipython 解释器 singularity run conda.sif ipython# 或者使用conda环境中的绝对路径singularity exec conda.sif /opt/conda/envs/…/bin/app 然而这种方法无法激活 conda 环境在某些情况下会遇到环境变量问题。 方式3手动处理 conda 环境变量 较多情况下激活 conda 环境的作用在于重新配置环境变量。 例如我们在 base conda 环境下安装某个应用其软件依赖的可执行程序一般会被放置在 /opt/conda/bin 目录下在 activate conda 环境后/opt/conda/bin 目录就会被添加到环境变量中。 因此在不激活 conda 环境的条件下我们可以使用三种方式实现环境变量的配置 推荐在调用容器前添加需要的环境变量 export PATH/opt/conda/bin:\(PATH 在现存环境变量的路径下例如/usr/local/bin为调用的软件依赖创建软链接 ln -s /opt/conda/bin/curl /usr/local/bin/curl 直接修改源代码中的依赖路径为绝对路径。 8.1 conda 和容器的区别 Conda和容器技术如Docker都是现代软件开发和数据科学中常用的工具用于解决环境依赖和应用部署的问题。尽管它们有着相似的目标即确保应用可以在不同的环境中以一致的方式运行但它们在设计和工作方式上有着根本的不同。 Conda 的主要目的是管理不同版本的软件包和创建虚拟环境以便在同一计算机上安装和运行不同的软件包和库。它主要用于 Python 环境。 容器的主要目的是将整个应用程序及其依赖项打包成容器以确保应用程序在不同环境中的一致性和 可移植性。 隔离级别 CondaConda 提供虚拟环境通过创建独立的环境来隔离不同软件包的依赖关系但它仍运行于操作系统之上依赖于宿主机的操作系统和库尽管通过环境可以实现一定程度的隔离。 容器与宿主机共享内核在操作系统级别提供隔离每个容器都有自己的文件系统、网络配置和隔离的进程空间。 8.2 在 Singularity 容器中配置 conda 实例1构建 qiime1 容器 首先在容器中安装 miniconda wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.shchmod ux Miniconda3-latest-Linux-x86_64.sh./Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3chmod --recursive arw /opt/miniconda3 必须注意的是Singularity 容器内的进程默认以用户 root 的身份运行。这意味着 \)HOME 被设置为 /root此时Miniconda 在默认情况下会被安装到 /root/miniconda3。 然而root 目录只有 root 账号才能访问即使里面的文件有 arx 权限。即如果我们将 conda 默认装到了容器内 root 目录下我们将无法以非 root 账户使用容器内的 conda因此conda 一定不能被安装在 /root 目录下。 针对这一问题我们在使用 shell 修改容器时最好添加 –no-home 参数。 安装 qiime1 及其依赖 # source .bashrc. /.bashrc# 1 创建新的 conda 环境 qiime1conda create -n qiime1 python2.7conda activate qiime1# 2 安装matplotlib1.4.3的时候出现错误 The following required packages can# not be built: * freetype, pip 不能安装系统依赖手动安装系统依赖后然后安装apt-get install libfreetype6-dev libxft-devpip install matplotlib1.4.3# 3 qiime中要求biom-format2.1.4,2.2.0,但是目前版本不支持python 2.7# 手动安装2.1.4版本pip install biom-format2.1.4# 4 最后安装qiimepip install qiime# 5 检测安装是否成功print_qiime_config.py -t 实例2构建 qiime2 容器 下面还展示了一种直接利用 dockerfile 构建 qiime2 容器的方式 FROM ubuntu:20.04ENV DEBIAN_FRONTENDnoninteractiveRUN apt-get update  \    apt-get install -y \    apt-utils \    wget1.20.3-1ubuntu1 \    git1:2.25.1-1ubuntu3  \    apt-get clean  \    rm -rf rm -rf /var/lib/apt/lists/*  \    wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.8.3-Linux-x86_64.sh      chmod x Miniconda3-py38_4.8.3-Linux-x86_64.sh      ./Miniconda3-py38_4.8.3-Linux-x86_64.sh -b -p /opt/miniconda3      ln -s /opt/miniconda3/bin/conda /usr/bin/conda      wget https://data.qiime2.org/distro/core/qiime2-2020.8-py36-linux-conda.yml      conda env create -n qiime2-2020.8 –file qiime2-2020.8-py36-linux-conda.yml      conda install -y -n qiime2-2020.8 -c conda-forge -c bioconda -c qiime2 -c defaults q2cli q2templates q2-types q2-feature-table q2-metadata vsearch snakemake      chmod –recursive arw /opt/miniconda3      apt-get clean      rm -rf /var/lib/apt/lists/*      rm /qiime2-2020.8-py36-linux-conda.yml      rm /Miniconda3-py38_4.8.3-Linux-x86_64.shCMD [/bin/bash] 参考前面的方法创建 docker 容器后转为 singularity。或是按上文中的方法直接从 dockerfile 到 singularity。 这样singularity exec ~/dockerimage.sif conda 就能正常运行并显示 conda 的使用情况。然而如果尝试执行其他一些命令例如 singularity exec ~/dockerimage.sif conda run python -v我们会得到类似以下的错误信息 OSError: [Errno 30] Read-only file system: /opt/miniconda3/.tmp58csqy_a 这是因为除了挂载的目录外容器是不可变的。此外运行 singularity exec /dockerimage.sif conda activate qiime2-2020.8 也会失败 CommandNotFoundError: Your shell has not been properly configured to use conda activate. To initialize your shell, run $ conda init SHELL_NAME Currently supported shells are: bash fish tcsh xonsh zsh powershell See conda init –help for more information and options. IMPORTANT: You may need to close and restart your shell after running conda init. 即使我们已经正确修改设置了 shell我们仍然会得到以上结果。 8.3 使用 Singularity 容器中的 conda 针对以上问题我们可以提供两种可能的解决方案然而这两个都存在很强的限制目前来看我们还无法完美的解决这一问题 方式1在容器内部运行 首先进入容器 singularity shell /dockerimage.sif 然后在容器内部运行 conda init # Modifies .bashrc on your host machinesource .bashrc # Loads modified .bashrcexport LC_ALLC.UTF-8 # Sets locale to UTF-8export LANGC.UTF-8 # Sets locale to UTF-8conda activate qiime2-2020.8 # Activates the environment 这一方法在我们具有 root 权限且只需要在本地运行程序时的体验很好。然而在我们需要搭配 HPC 使用时非常困难。 方式 2直接调用特定 conda 环境中的程序执行 例如我们可以使用 def 文件创建一个包含 conda 的容器后将参数直接传递给 conda 环境中的程序 First, youll want to # get the environment YMLconda activate your_envconda env export  environment.yml Bootstrap: dockerFrom: continuumio/miniconda3%files    environment.yml%post    /opt/conda/bin/conda env create -f environment.yml%runscript    exec /opt/conda/envs/\((head -n 1 environment.yml | cut -f 2 -d  )/bin/\) 构建容器 singularity build conda.sif 此时我们可以直接调用容器内 conda 环境中的 ipython 解释器 singularity run conda.sif ipython# 或者使用conda环境中的绝对路径singularity exec conda.sif /opt/conda/envs/…/bin/app 然而这种方法无法激活 conda 环境在某些情况下会遇到环境变量问题。 方式3手动处理 conda 环境变量 较多情况下激活 conda 环境的作用在于重新配置环境变量。 例如我们在 base conda 环境下安装某个应用其软件依赖的可执行程序一般会被放置在 /opt/conda/bin 目录下在 activate conda 环境后/opt/conda/bin 目录就会被添加到环境变量中。 因此在不激活 conda 环境的条件下我们可以使用三种方式实现环境变量的配置 推荐在调用容器前添加需要的环境变量 export PATH/opt/conda/bin:$PATH 在现存环境变量的路径下例如/usr/local/bin为调用的软件依赖创建软链接 ln -s /opt/conda/bin/curl /usr/local/bin/curl 直接修改源代码中的依赖路径为绝对路径。 本文由 mdnice 多平台发布