【发布时间】:2022-06-10 20:03:14
【问题描述】:
我必须同时使用 Conda 和 pip,因为我需要的一些包只能通过 Conda 获得,而其他包只能通过 PyPI 获得。
我正在仔细关注this guide,以免我的环境处于损坏状态。
请注意以下摘录:
在 pip 之后运行 conda 可能会覆盖并可能 中断通过 pip 安装的软件包。同样,pip 可能会升级或删除 conda 安装包需要的包。
为所需的所有其他软件创建 conda 包是一个 构建数据科学环境的可靠安全方法 但如果环境涉及大量 仅在 PyPI 上可用的软件包。在这些情况下,使用 pip 只有在通过 conda 安装了所有其他要求之后 最安全的做法。
只有在使用 conda 安装尽可能多的包之后 应该使用 pip 来安装任何剩余的软件。 如果 需要对环境进行修改,最好创建一个 新环境,而不是在 pip 之后运行 conda。
因此,我经常需要删除并重新创建我的 Conda 环境。
这是我的做法:
# Dump the environment to a file
$ conda env export > environment.yml
# Deactivate the environment, so it becomes deletable
$ conda deactivate
# Delete the environment
$ conda env remove -n my-env
# Recreate the environment from the file
$ conda env create -f environment.yml -v
# Activate the new environment
$ conda activate my-env
有没有更简单的方法来使用 one 命令完成所有这些操作?
我想我可以编写一个 shell 脚本,但有些命令需要任意时间才能完成,而且我不知道如何正确计时。
像conda env recreate 这样的东西是理想的。
【问题讨论】:
-
您可以手动将所有包添加到 environment.yaml 文件中,以及 pip 包:stackoverflow.com/questions/35245401/…
-
如果我的问题不清楚,我深表歉意。我已经有一个包含 conda 和 pip 要求的文件 (
environment.yml),所以这部分没问题。我试图弄清楚如何使用单个命令而不是手动执行五个命令来删除和重新创建我的环境。 -
为什么 bash 脚本不等待每个命令完成后再运行下一个命令?
-
它会自动执行吗?我对 bash 脚本不是很熟悉,所以我推测(可能是错误的)它不会自动处理计时和异常。
-
你可以用
&&链接所有这些命令