ubuntu移动文件到另一个文件夹_将Anaconda移动到新的文件夹

最近需要将 CMA-PI 上的个人目录从 /g3 迁移到 /g11。我已在 /g3 的个人目录中安装 Anaconda3,并已在实时运行的测试系统中应用。

虽然大部分软件都可以通过修改 PATH 环境变量或者修改 Modules 配置文件的方式支持目录迁移,但 Anaconda 环境却无法直接移动目录。

原因

conda 命令是一个 Python 脚本,从下面的源码中可以看到第一行指定了 Python 可执行程序的绝对路径。

#!/g3/wangdp/lang/python/anaconda3/bin/python
# -*- coding: utf-8 -*-
import sys
# Before any more imports, leave cwd out of sys.path for internal 'conda shell.*' commands.
# see https://github.com/conda/conda/issues/6549
if len(sys.argv) > 1 and sys.argv[1].startswith('shell.') and sys.path and sys.path[0] == '':
# The standard first entry in sys.path is an empty string,
# and os.path.abspath('') expands to os.getcwd().
del sys.path[0]

if __name__ == '__main__':
from conda.cli import main
sys.exit(main())

虽然直接修改第一行的路径可以让 conda 命令重新生效,但当运行 juypter 命令时依然会出错。

jupyter 命令也是一个 Python 脚本,源码中第一行同样指定了 Python 可执行程序的绝对路径。

#!/g3/wangdp/lang/python/anaconda3/envs/nwpc-data/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from jupyter_core.command import main

if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())

其他 Python 脚本形式的可执行程序也可能遇到同样的问题。

尽管可以通过 sed 等命令批量替换目录,但编写 sed 命令不太容易,也无法确定是否会遇到其他类型的问题。

方案

Anaconda 有官方的推荐迁移目录方法:重新安装!

如果想要保留原有的环境,可以先将环境导出到一个 YAML 文件中。

conda env export > environment.yml

在新安装的 Anaconda 中使用该文件创建环境

conda env create -f environment.yml

生成的 environment.yml 文件如下所示:

name: nwpc-data
channels:
- pytorch
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
- conda-forge
- defaults
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=1_llvm
- altgraph=0.16.1=py_0
- appdirs=1.4.3=py_1
# ...
- zlib=1.2.11=h516909a_1006
- zstd=1.4.4=h6597ccf_3
- pip:
- eccodes-python==0.9.7
- nwpc-workflow-model==0.5.0
# ..
- tqdm==4.46.0
prefix: /g3/wangdp/lang/python/anaconda3/envs/nwpc-data

其中包含使用 pip 安装的软件。如果 pip 安装的软件无法在线安装,例如上面的 nwpc-workflow-model 包,最好将其删掉,在环境创建完成后,再手动使用 pip 安装。

注:笔者执行命令时没有删除,也可以创建环境。

参考

Moving Anaconda from one directory to another

https://docs.anaconda.com/anaconda/user-guide/tasks/move-directory/


83060efacf3675af4a316034e65d0b38.png

题图由 Dominic Wunderlich 在 Pixabay 上发布。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值