是否有将conda列表转换为yml文件的脚本

时间:2019-12-23 09:01:37

标签: python conda

我有一个保存的文件,其先前创建的环境的输出为conda list。格式如下

# packages in environment at /home/*****/intelpython3:
#
# Name                    Version                   Build  Channel
_tflow_select             2.1.0                       gpu    anaconda
absl-py                   0.8.0                    py36_0    anaconda
affine                    2.3.0                    pypi_0    pypi
asn1crypto                0.24.0                   py36_3    intel
astor                     0.8.0                    py36_0    anaconda
atomicwrites              1.3.0                    pypi_0    pypi
attrs                     19.3.0                   pypi_0    pypi
audioread                 2.1.6                    py36_0    <unknown>
awscli                    1.16.292                 pypi_0    pypi
backcall                  0.1.0                    py36_2    <unknown>
backports                 1.0                      py36_9    <unknown>
bayesian-optimization     1.0.1                    pypi_0    pypi
bleach                    2.1.3                    py36_2    <unknown>

有人可以通过一些python / unix脚本或其他方式将其转换为可以与conda一起使用以创建新环境的yaml(environment.yml)文件吗?

1 个答案:

答案 0 :(得分:1)

要将导出的文件转换为conda的Yaml规范,您只需将“名称”和“版本”列以等号连接即可。熊猫是一个很好的工具(我假设您当前的环境列表名为“ environment.txt”):

import pandas as pd

df = pd.read_table('environment.txt', '\\s+', skiprows=3, header=None, 
                   names=['Name', Version', 'Build', 'Channel'])
env = df.Name + '=' + df.Version
env.to_csv('environment.yml', header=False, index=False)

将不包含内部版本号,但是conda并不需要这些。您必须自己指定频道。


要创建当前环境的yaml文件,您需要--export标志和指向文件的管道。

conda list -n intelpython3 --export > environment.yml

要使用该文件,您可以运行:

conda env create -n <environment name> --file environment.yml

较新版本的conda也可以使用:

conda create -n <environment name> --file environment.yml

但是在较旧的版本上至少在Windows上存在一些问题。