web-dev-qa-db-ja.com

conda-env list / conda info --envsはどのようにして環境を見つけますか?

私のユーザーはminicondaでインストールされた構造生物学プログラムを使用しているため、anaconda/minicondaを実験していますが、A)他のminicondaアプリケーションが存在する可能性があることを考慮に入れています。B)プログラムがマルチユーザー環境で使用されることを考慮しています。 。

そこで、Arch Linuxを使用して、最初にanaconda(バージョン4.5.12)をインストールし、次に自分のアカウントを使用して、いくつかのテスト環境を作成しました。

conda create -n snakes
conda create -n sharks

次に、(完全に)anacondaをアンインストールしてminiconda(バージョン4.5.12も)をインストールし、標準以外の場所にrootとして別の環境を作成しました。

# conda create -p /usr/local/miniconda/pyem

ここで奇妙なことが起こります。 rootユーザーとして環境を一覧表示すると、デフォルトと先ほど作成した環境だけでなく、ユーザーアカウントを使用して以前に作成した環境も表示されます。

[root@lizard /]# conda info --envs
# conda environments:
#
                         /home/cnsit/.conda/envs/sharks
                         /home/cnsit/.conda/envs/snakes
base                  *  /opt/miniconda3
                         /usr/local/miniconda/pyem

conda-env listコマンドでも同じ出力が得られます。)

したがって、質問:condaが別のユーザーによって作成された環境を見つける方法は?さらに、condaの元のインスタンスの親ディレクトリ全体が削除され、完全に異なる場所にあるディレクトリに置き換えられた場合(したがって、ローカルenvironments.txtファイルがこれをカタログ化している可能性があります。

4
pgoetz

info コマンドのコードは、 cli.main_info モジュール、およびこの場合の関連コードは here です。 here から関数をインポートし、(特に)設定値envs_dirsを読み込みます。次のコマンドを実行すると、システムでこの構成値の値を確認できます

conda config --show envs_dirs

これにより、検索対象の環境のユーザーディレクトリが表示されると思います。

4
darthbith