簡體   English   中英

conda env create from yml 鎖定

[英]conda env create from yml locks up

在一個簡單的測試中,我嘗試創建一個基本的 Conda 環境,將該環境導出到 YAML 文件,然后在完全相同的計算實例上從 YAML 文件重新創建環境。 無論我嘗試什么,重新創建步驟都會掛起(失敗)並且沒有錯誤消息(超時)

這是在 AWS EC2 Linux 實例上。

命令順序如下:

conda create -n myenv python=3.10.4  
conda activate myenv   
conda list     ## output is shown below
conda env export > newenv.yml   ## yml contents are shown below...so far so good
conda deactivate
conda env create -n newenv --f newenv.yml  ## this is where it hangs up/freezes
<output> Collecting package metadata (repodata.json): -    
<output> Collecting package metadata (repodata.json): - Killed   ## after about 5mins

我還嘗試了多種變體,在嘗試使用相同的名稱 (myenv) 重新創建它之前刪除了 myenv。 anaconda3/envs文件夾的文件夾權限是775 ,創建環境沒有問題。 我已經更新、清理並重新初始化了 Conda,並多次重新啟動了我的實例。

任何幫助/想法將不勝感激。 這是我的第一個 Python 項目。

康達清單 output

(myenv) [ec2-user@ip-172-31-93-141 ~]$ conda list
# packages in environment at /home/ec2-user/anaconda3/envs/myenv:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
ca-certificates           2022.9.24            ha878542_0    conda-forge
ld_impl_linux-64          2.39                 hcc3a1bd_1    conda-forge
libffi                    3.3                  h58526e2_2    conda-forge
libgcc-ng                 12.2.0              h65d4601_19    conda-forge
libgomp                   12.2.0              h65d4601_19    conda-forge
libsqlite                 3.40.0               h753d276_0    conda-forge
libstdcxx-ng              12.2.0              h46fd767_19    conda-forge
libuuid                   1.41.5               h5eee18b_0
libzlib                   1.2.13               h166bdaf_4    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
openssl                   1.1.1s               h0b41bf4_1    conda-forge
pip                       22.3.1             pyhd8ed1ab_0    conda-forge
python                    3.10.4               h12debd9_0
readline                  8.1.2                h0f457ee_0    conda-forge
setuptools                65.5.1             pyhd8ed1ab_0    conda-forge
sqlite                    3.40.0               h4ff8645_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
tzdata                    2022g                h191b570_0    conda-forge
wheel                     0.38.4             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zlib                      1.2.13               h166bdaf_4    conda-forge

YAML 檔案 output

name: myenv
channels:
  - conda-forge
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - bzip2=1.0.8=h7f98852_4
  - ca-certificates=2022.9.24=ha878542_0
  - ld_impl_linux-64=2.39=hcc3a1bd_1
  - libffi=3.3=h58526e2_2
  - libgcc-ng=12.2.0=h65d4601_19
  - libgomp=12.2.0=h65d4601_19
  - libsqlite=3.40.0=h753d276_0
  - libstdcxx-ng=12.2.0=h46fd767_19
  - libuuid=1.41.5=h5eee18b_0
  - libzlib=1.2.13=h166bdaf_4
  - ncurses=6.3=h27087fc_1
  - openssl=1.1.1s=h0b41bf4_1
  - pip=22.3.1=pyhd8ed1ab_0
  - python=3.10.4=h12debd9_0
  - readline=8.1.2=h0f457ee_0
  - setuptools=65.5.1=pyhd8ed1ab_0
  - sqlite=3.40.0=h4ff8645_0
  - tk=8.6.12=h27826a3_0
  - tzdata=2022g=h191b570_0
  - wheel=0.38.4=pyhd8ed1ab_0
  - xz=5.2.6=h166bdaf_0
  - zlib=1.2.13=h166bdaf_4
prefix: /home/ec2-user/anaconda3/envs/myenv

可能是頻道混合問題。 我看到pythonlibuuid來自默認(即mainanaconda )頻道,而其他一切都是 Conda Forge。 如果你有channel_priority: strict ,那么conda- forge 通道中的任何包(它被 YAML 賦予優先級,因為它是第一個),將屏蔽較低優先級通道(默認值)中的任何同名包。

具體來說,Conda 被告知要找到具有特定版本 ( python ) 的h12debd9_0 ,該版本僅在默認情況下可用,但由於 conda - forge 有python可用的包,因此只會考慮這些包。 掛起可能只是Conda試圖“解釋”為什么找不到解決方案。

立即解決方法

如果這是問題所在,那么將通道優先級更改為flexible應該可以正常工作。

conda config --set channel_priority flexible

更好:避免混合渠道

如果您改為從conda-forge開始,那么一切都應該沒問題。 如今,Conda Forge 完全可以自給自足。 而 Anaconda 用戶通常需要使用 Conda Forge 包來填補空白。 這種做法(Anaconda 文檔鼓勵這種做法,但幾乎沒有警告它有多大問題)會產生很大一部分用戶問題。

就個人而言,我推薦Mambaforge的基本安裝。 它默認使用conda-forge ,在基礎環境中安裝最少的包,並且自帶Mamba,可以快速解決環境問題。

問題原來是 memory 問題(如缺少)。 我試圖在 t2.micro 免費套餐上的 AWS EC2 實例上執行此操作。 這個實例只有 1GB 的 memory (RAM),並且隱藏在我從 dmesg 命令(命令失敗后從終端運行)得到的反饋中,我注意到一條“內存不足”行。 我增加了實例大小,問題就消失了。 謝謝您的幫助!

暫無
暫無

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

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