有什么方法可以在所有python环境中安装软件包

时间:2018-07-02 15:08:04

标签: pip anaconda conda

我创建了多个python的conda环境。但是有时候,我遇到一些实用程序包,该实用程序包对系统上的所有环境都有帮助。有什么方法可以做到,而无需在所有环境之间来回切换和单独安装它们。

谢谢

2 个答案:

答案 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