Есть ли способ установить пакет во всех средах Python? - PullRequest
0 голосов
/ 02 июля 2018

Я создал несколько сред conda из python. Но иногда я сталкиваюсь с некоторым пакетом утилит, который может быть полезен для всех сред, которые есть в моей системе. Есть ли способ сделать это, не переключаясь между всеми средами и устанавливая их по отдельности.

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

В этом случае вы можете установить пакет в среде base (root). Все пакеты, связанные с утилитами командной строки (пример git) и графическими пользовательскими интерфейсами (пример spyder) в этой среде по умолчанию, видны во всех ваших средах conda.

Обновление

Вы можете использовать мой скрипт . Раскомментируйте последние 3 строки и измените список пакетов. Вы можете использовать ручной список envs или использовать автоматический во всех envs.

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)
0 голосов
/ 03 июля 2018

Если вы храните все свои виртуальные среды в одном месте или если вы уже используете 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
...