Пакеты обновлений 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
.