pko*_*zyk 343
你不能.
(请记住deactivate在Windows和source deactivateMacOS/Linux 上停用当前环境)
conda create --name new_name --clone old_name
conda remove --name old_name --all # or its alias: `conda env remove --name old_name`
Run Code Online (Sandbox Code Playgroud)
这种方法有几个缺点:
--offlineflag来禁用它,有一个未解决的问题请求此功能.
小智 23
conda create --name new_name --copy --clone old_name 更好
我使用的conda create --name new_name --clone old_name是没有--copy
但遇到点子中断的...
以下网址可能有助于 在克隆的 conda 环境中安装 tensorflow 会破坏从其克隆的 conda 环境
Tha*_*wda 10
conda 应该给我们一个简单的工具,cond env rename <old> <new>但它没有。简单地重命名目录,就像在上一个答案中一样,当然会破坏硬编码的 hashbangs(#!)。因此,我们需要更深一层来实现我们想要的。
conda env list
# conda environments:
#
base * /home/tgowda/miniconda3
junkdetect /home/tgowda/miniconda3/envs/junkdetect
rtg /home/tgowda/miniconda3/envs/rtg
Run Code Online (Sandbox Code Playgroud)
在这里,我正在尝试重命名rtg--> unsup (请记住这些名字,这是我的真实用例)
$ cd /home/tgowda/miniconda3/envs
$ OLD=rtg
$ NEW=unsup
$ mv $OLD $NEW # rename dir
$ conda env list
# conda environments:
#
base * /home/tgowda/miniconda3
junkdetect /home/tgowda/miniconda3/envs/junkdetect
unsup /home/tgowda/miniconda3/envs/unsup
$ conda activate $NEW
$ which python
/home/tgowda/miniconda3/envs/unsup/bin/python
Run Code Online (Sandbox Code Playgroud)
之前的答案已经报道了这一点,但是等等,我们还没有完成!
挂起的任务是, $NEW/bindir 有一堆可执行脚本,其中 hashbangs ( #!) 指向 $OLD env 路径。
参见jupyter,例如:
$ which jupyter
/home/tgowda/miniconda3/envs/unsup/bin/jupyter
$ head -1 $(which jupyter) # its hashbang is still looking at old
#!/home/tgowda/miniconda3/envs/rtg/bin/python
Run Code Online (Sandbox Code Playgroud)
因此,我们可以使用 sed 轻松修复它
$ sed -i.bak "s:envs/$OLD/bin:envs/$NEW/bin:" $NEW/bin/*
# `-i.bak` created backups, to be safe
$ head -1 $(which jupyter) # check if updated
#!/home/tgowda/miniconda3/envs/unsup/bin/python
$ jupyter --version # check if it works
jupyter core : 4.6.3
jupyter-notebook : 6.0.3
$ rm $NEW/bin/*.bak # remove backups
Run Code Online (Sandbox Code Playgroud)
现在我们完成了
我认为编写一个可移植的脚本来完成所有这些并将其绑定到conda env rename old new.
我在 ubuntu 上测试过。无论出于何种不可预见的原因,如果出现问题并且您希望恢复上述更改:
$ sed -i.bak "s:envs/$OLD/bin:envs/$NEW/bin:" $NEW/bin/*
# `-i.bak` created backups, to be safe
$ head -1 $(which jupyter) # check if updated
#!/home/tgowda/miniconda3/envs/unsup/bin/python
$ jupyter --version # check if it works
jupyter core : 4.6.3
jupyter-notebook : 6.0.3
$ rm $NEW/bin/*.bak # remove backups
Run Code Online (Sandbox Code Playgroud)
正如@pkowalczyk的回答提到的一些缺点:以我的拙见,无痛且无风险(解决方法)的方法是遵循以下步骤:
conda env export > environment.ymlenvironment.yml文件并根据需要更改环境名称(通常位于文件的第一行yaml)conda env create -f environment.yml此过程需要几分钟,现在您可以安全地删除旧环境。
PS 近 5 年了,conda 仍然没有它的“重命名”功能。
基于dwanderson的有用评论,我能够以Bash一线实现此目的:
conda create --name envpython2 --file <(conda list -n env1 -e )
Run Code Online (Sandbox Code Playgroud)
我的名字不好的env是“ env1”,我想从中克隆的新名字是“ envpython2”。
| 归档时间: |
|
| 查看次数: |
81443 次 |
| 最近记录: |