我创建了多个python的conda环境。但是有时候,我遇到一些实用程序包,该实用程序包对系统上的所有环境都有帮助。有什么方法可以做到,而无需在所有环境之间来回切换和单独安装它们。
谢谢
答案 0 :(得分:1)
在这种情况下,您可以在base (root)
环境中安装软件包。在您的所有conda环境中,该默认环境中与命令行实用程序(示例git
)和图形用户界面(示例spyder
)相关的所有软件包都是可见的。
更新
您可以使用我的script。取消注释最后3行并更改软件包列表。您可以使用环境的手动列表,也可以在所有环境中使用自动列表。
import subprocess as sub
def conda_env_list():
p = sub.Popen("conda env list", shell=True, stdout=sub.PIPE, encoding="utf-8")
p.wait()
out = p.communicate()[0].splitlines()
envs = [out[line].split()[0] for line in range(2, len(out)-1)]
return envs
def conda_env_install(envs, packages, channel="default"):
TEMPLATE = "conda install {confirm} -c {channel} -n {env} {packages} "
if isinstance(envs, str):
envs = [envs]
if isinstance(packages, list):
packages = " ".join(packages)
confirm = "-y"
for env in envs:
cmd = TEMPLATE.format(confirm=confirm, packages=packages, \
channel=channel, env=env)
p = sub.Popen(cmd, shell=True, stdout=sub.PIPE, encoding="utf-8")
p.wait()
print(p.communicate()[0])
envs = conda_env_list()
packages = ["git"]
conda_env_install(envs, packages)
答案 1 :(得分:0)
如果将所有虚拟环境都存储在一个位置,或者如果您已经使用了virtualenvwrapper
来将virtualenv存储在~/.virtualenvs/
中,则可以使用allvirtualenv
中的命令virtualenvwrapper
;如果您不使用virtualenvwrapper
,则必须先安装它。
allvirtualenv pip install somepackages
我使用以下bash脚本在~/.virtualenvs/
和~/.tox/
的所有环境中运行命令:
#! /usr/bin/env bash
if source virtualenvwrapper.sh; then
allvirtualenv eval "$@"
for tox_envs in ~/.tox/*; do
if [[ "$tox_envs" = */.tox/\* ]]; then
exit 0
fi
WORKON_HOME="$tox_envs" allvirtualenv eval "$@"
done
fi