1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python一键式迁移conda环境的方法(解决Solving environment: failed)

python一键式迁移conda环境的方法(解决Solving environment: failed)

时间:2019-05-23 12:22:23

相关推荐

python一键式迁移conda环境的方法(解决Solving environment: failed)

最近需要将个人电脑上配置的conda环境迁移到linux系统的服务器上。

由于安装的库太多,不想一个个手动重新进行安装,于是上网找了很多迁移conda环境的方法。

但会遇到下面的问题:

解决办法应该是删除库后面等号后面对应的内容。但在库数目很多时,手动删除等号后的字符串实在是繁琐,所以写了一段代码解决上述问题。

方法主要就是删除库后面的版本号,并且将pip安装的库单独分割出来,用pip命令单独安装。

# 本代码用于移植conda环境# 首先在需要移植的环境下输入 conda env export > old_env.yml 保存环境参数# 然后剔除掉无法识别的库,并分立conda和pip 分别用两者进行安装# 需要手动修改yml首尾的环境名和环境保存路径# conda env create -f old_env.yml# pip install -r requirement.textdef file_to_list(file_path):read_file_ = ""text_list_ = []num_ = 0with open(file_path, "r", encoding="utf-8") as f:for line in f:text_list_.append(line)read_file_ += '%d | ' % num_ + linenum_ += 1return text_list_, read_file_odd_yml_path = '/home/user/old_env.yml' # linux下yml文件的绝对路径new_yml_path = '/home/user/new_env.yml' # 修改后的yml保存路径requirement_path = '/home/user/requirement.text' # new_env_name = 'new_env' # linux下新安装的环境名称new_env_path = '/home/user/anaconda3/envs/new_env' # 环境路径 可以用conda info --env查看现有环境的路径text_list, read_file = file_to_list(odd_yml_path)# 无法导入的库 需要先用conda试一遍 conda会提示哪些识别不了# 把提示的库复制在下方ignore_f = ' - pywin32-ctypes\- m2w64-gcc-libgfortran\- m2w64-gcc-libs-core\- win_inet_pton\- vs_runtime\- pywinpty\- icc_rt\- m2w64-libwinpthread-git\- vc\- m2w64-gmp\- wincertstore\- winpty\- m2w64-gcc-libs\- msys2-conda-epoch'f2 = ''for i in range(len(text_list)):if '-' in text_list[i]:out = ''num = 0for j in text_list[i]:if j == '=':num += 1if num < 1:out += jif ' - pip:\n' == text_list[i]:breaktext_list[i] = outtext_list[i] += '\n'for i in range(len(text_list)):if 'name:' in text_list[i]:text_list[i] = 'name: ' + new_env_name + '\n'if 'prefix:' in text_list[i]:print('123123')text_list[i] = 'prefix: ' + new_env_path + '\n'start_flag = Falserequirement_text = ''for i in range(len(text_list)):if ' - pip:\n' == text_list[i]:start_flag = Truerequirement_text += ' - pip\n'if start_flag:if 'prefix' not in text_list[i]:requirement_text += text_list[i]text_list_new = []for i in range(len(text_list)):if text_list[i][:-2] not in ignore_f:text_list_new.append(text_list[i])for i in range(len(text_list_new)):f2 += text_list_new[i]with open(requirement_path, "w", encoding="utf-8") as f:f.write(requirement_text)with open(new_yml_path, "w", encoding="utf-8") as f:f.write(f2)

接着到linux系统下进入yml保存的路径,分别运行下面两行代码即迁移成功。

conda env create -f new_env.yml

pip install -r requirement.text

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。