Пакеты обновлений Conda кроме python

Я новичок в Python, и я использую старую версию anaconda, которая имеет версию Python 3.5.2, потому что я хотел бы использовать с ним тензорный поток. У меня есть несколько устаревших пакетов, которые я хотел бы обновить с помощью "conda update all". Есть ли способ сделать это без обновления python с 3.5 до 3.6, что несовместимо с tenorflow?

3 ответа

Решение

Вы можете обновить их все вручную conda update yourpackage

... или вы можете обновить их все conda update --all, а затем снова понизить Python с помощью conda install python=3.5.2,

Короткий ответ

conda update --all --dry-run 2>/dev/null |
    grep -Fe '-->' |
    cut -d' ' -f3 |
    grep -ve 'python' |
    xargs conda update

Длинный ответ

Шаг 1. Пробный запуск для проверки обновляемых пакетов

Команда

conda update --all --dry-run

Результат

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: //anaconda3/envs/general


The following packages will be UPDATED:

  astroid                                      2.3.1-py37_0 --> 2.3.2-py37_0
  ca-certificates                               2019.8.28-0 --> 2019.10.16-0
  openssl                                 1.0.2t-h1de35cc_1 --> 1.1.1d-h1de35cc_3
  pip                                         19.2.3-py37_0 --> 19.3.1-py37_0
  pylint                                       2.4.2-py37_0 --> 2.4.3-py37_0
  python                                   3.7.0-hc167b69_0 --> 3.7.4-h359304d_1
  sqlite                                  3.30.0-ha441bb4_0 --> 3.30.1-ha441bb4_0



DryRunExit: Dry run. Exiting.

Шаг 2. Избавьтесь от сообщений из stderr (необязательно, но более четко)

Команда

conda update --all --dry-run 2>/dev/null

Результат

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: //anaconda3/envs/general


The following packages will be UPDATED:

  astroid                                      2.3.1-py37_0 --> 2.3.2-py37_0
  ca-certificates                               2019.8.28-0 --> 2019.10.16-0
  openssl                                 1.0.2t-h1de35cc_1 --> 1.1.1d-h1de35cc_3
  pip                                         19.2.3-py37_0 --> 19.3.1-py37_0
  pylint                                       2.4.2-py37_0 --> 2.4.3-py37_0
  python                                   3.7.0-hc167b69_0 --> 3.7.4-h359304d_1
  sqlite                                  3.30.0-ha441bb4_0 --> 3.30.1-ha441bb4_0

Шаг 3. Извлеките строки с названиями пакетов

Команда

conda update --all --dry-run 2>/dev/null |
    grep -Fe '-->'

Результат

  astroid                                      2.3.1-py37_0 --> 2.3.2-py37_0
  ca-certificates                               2019.8.28-0 --> 2019.10.16-0
  openssl                                 1.0.2t-h1de35cc_1 --> 1.1.1d-h1de35cc_3
  pip                                         19.2.3-py37_0 --> 19.3.1-py37_0
  pylint                                       2.4.2-py37_0 --> 2.4.3-py37_0
  python                                   3.7.0-hc167b69_0 --> 3.7.4-h359304d_1
  sqlite                                  3.30.0-ha441bb4_0 --> 3.30.1-ha441bb4_0

Шаг 4. Создайте список имен пакетов

Команда

conda update --all --dry-run 2>/dev/null |
    grep -Fe '-->' |
    cut -d' ' -f3

Примечание. Поскольку перед каждым именем пакета стоит 2 пробела, имя пакета является третьим полем строки. Это приводит к аргументу-f3.

Результат

astroid
ca-certificates
openssl
pip
pylint
python
sqlite

Шаг 5. Удалите из списка пакеты, не требующие обновления.

Команда

conda update --all --dry-run 2>/dev/null |
    grep -Fe '-->' |
    cut -d' ' -f3 |
    grep -ve 'python'

Результат

astroid
ca-certificates
openssl
pip
pylint
sqlite

Шаг 6. Обновите пакеты из списка

Команда

conda update --all --dry-run 2>/dev/null |
    grep -Fe '-->' |
    cut -d' ' -f3 |
    grep -ve 'python' |
    xargs conda update

Еще один простой способ: conda update all python=3.5.2

Замените версию python вашей текущей установленной версией. Это обновит все пакеты, и поскольку целевая версия для pythonуже установлен, он не будет обновляться. Это также работает с несколькими пакетами: conda update all python=3.5.2 spyder=3.3.6.

Другие вопросы по тегам