如何解决获取用户在 conda 环境中安装的软件包列表无依赖
此线程与to this one(可能还有also to this one)相关。比如说,我克隆了默认的 base
conda 环境,随着时间的推移,我在克隆的环境中使用 conda install
和 pip install
安装了许多软件包。过了一会儿,我想获得这些包的列表(最好的情况是没有与这些包一起安装的依赖项)。有没有办法做到这一点?我想出了这个简单的脚本,它只读取用 .json
生成的两个 conda env export --json
文件,并返回只能在克隆环境中但不能在基本环境中找到的唯一包。但最终的列表仍然包含很多我没有明确安装但作为依赖项安装的包。
import json
# both base and 'base + x' environment where exported using
# conda env export --json -n env_name > env_name.json
# get json as dicts
with open('./base.json') as json_file:
base_env = json_file.read()
base_env = json.loads(base_env)
with open('./base_clone.json') as json_file:
base_clone_env = json_file.read()
base_clone_env = json.loads(base_clone_env)
# get packages for both environments as lists
base_list = base_env['dependencies']
base_clone_list = base_clone_env['dependencies']
# the 'base + x' environment also contains pip installed packages that we get
# as separate list
base_clone_pip = base_clone_list.pop()['pip']
# we only want to find out which packages are installed in the 'base + x'
# environment that are not installed in the base environment (not if packages
# differ in the versions so we strip out the version part)
base_list = [s.split('=',1)[0] for s in base_list]
base_clone_list = [s.split('=',1)[0] for s in base_clone_list]
# these are the final lists
base_clone_pip = [s.split('=',1)[0] for s in base_clone_pip]
envs_diff = list(set(base_clone_list) - set(base_list))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。