簡體   English   中英

如何確定 conda 是否已經在 bash 腳本中的機器上可用?

[英]How to find out if conda is already available on a machine within a bash script?

我想創建一個 bash 腳本來在 conda 中安裝一個新的虛擬環境“ABC”。 但是在我繼續運行命令來創建這個環境之前,我想檢查一下機器上是否已經安裝了 conda。 如果沒有安裝,我想安裝 miniconda 然后創建環境“ABC”。 如果已經安裝了 conda,那么我將繼續創建環境。 (所有這些都應該發生在同一個腳本中)我只是想知道是否可以在 bash 腳本中檢查 conda 的存在,然后繼續進行其余的安裝?

'''

#!/bin/bash
<code_to_check_existence_of_conda_env_here ?>
//If it does not exist, I will run the below code
mkdir -p miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O 
miniconda3/miniconda.sh
bash miniconda3/miniconda.sh -b -u -p ~/miniconda3
conda env update -f my_env.yml

'''

這里的主要問題是 Conda 有多個組件。 加載哪些組件取決於 Conda 的安裝方式以及 BASH 腳本在哪個用戶下執行。 我將嘗試描述這些組件,希望您能決定什么是適合驗證的。

康達組件

1:康達包

第一個是 Python 包conda ,它安裝在 Anaconda/Miniconda/Miniforge基礎環境中。 如果基礎環境被激活,可以測試

python -m conda

這將給出類似的東西

/path/to/python: No module named conda

如果它不存在。 否則,它會輸出conda入口點的文檔。

2:康達入口點

充當 CLI 的入口點conda位於 Anaconda/Miniconda/Miniforge 安裝的condabin目錄下。 當用戶運行conda init時,會在他們的 shell 初始化文件(Linux BASH 的.bashrc )中添加一個托管部分,其中包含將condabin添加到 PATH 的代碼。 這很可能是 OP 想要識別的,但是,使用 shebang /bin/bash運行將不會加載.bashrc文件。 相反,一個人可能應該使用

#!/bin/bash -l

或者

#!/usr/bin/env bash -l

然后入口點可以位於

which conda

3:康達激活

最后,Conda 還包括一些純 shell 函數,這些函數在前面提到的 shell 初始化代碼中定義。 這設置了一個中間人shell函數,也稱為conda (本質上是一個別名),可以查看

type conda

此函數用於確定是否正在請求conda (de)?activate命令,它們是純 shell 函數,還是需要轉發到入口點的東西。

推薦

如果我在設計這個,我會編寫一個交互式腳本來檢查 #2 ( which conda ),如果它出現空白,然后提示用戶提供 PATH 到 Conda 入口點(也許他們將它安裝在一個奇怪的地方或者沒有'不運行conda init ) 或安裝 Miniforge。 1

我也不會使用基礎環境來安裝東西——這對最終用戶來說是個壞主意,更不用說第三方了——而是創建一個新環境。 我會用特定的默認環境名稱提示用戶,但也會為他們提供自定義選項。


[1]是的,Miniforge,而不是 Miniconda。 Anaconda默認頻道的商業用途現在需要付費許可證,因此最好使用免費的 Miniforge。

我不太擅長 bash 腳本,但我會執行一個命令:

pip3 freeze | grep conda

並根據輸出(如果退出狀態是否錯誤)安裝它或直接創建環境。

在您的機器上運行命令conda list ,安裝和未安裝時的輸出會有所不同,然后在輸出上運行 if 語句。

在 bash 中,如果我們要檢查是否安裝了軟件,則使用以下檢查。

if dpkg -l $SOFTWARE; then
<Do stuff>

鍵入conda activateconda activate env_name

如果已經安裝,第一個命令將激活基礎環境。 如果安裝了第二個命令,它將激活用戶創建的環境。

確保康達

這聽起來像是實驗工具ensureconda旨在解決的預期問題。 但是,這需要使用 pip 安裝 Python:

pip install ensureconda

以下是命令選項:

$ ensureconda --help
Usage: ensureconda [OPTIONS]

  Ensures that a conda/mamba is installed.

Options:
  --mamba / --no-mamba            search for mamba
  --micromamba / --no-micromamba  search for micromamba, install if not
                                  present
  --conda / --no-conda            search for conda
  --conda-exe / --no-conda-exe    search for conda.exe / conda-standalone,
                                  install if not present
  --no-install                    don't install conda/mamba if no version can
                                  be discovered
  --min-conda-version VERSIONNUMBER
                                  minimum version of conda to accept (defaults
                                  to 4.8.2)
  --min-mamba-version VERSIONNUMBER
                                  minimum version of mamba/micromamba to
                                  accept (defaults to 0.7.3)
  --help                          Show this message and exit.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM