Conda 更新包 python 除外
Conda update packages except python
我是 python 的初学者,我使用的是旧版本的 anaconda,它具有 python 的 3.5.2 版本,因为我想使用它来使用 tensorflow。我有一些过时的软件包,我想使用 "conda update all" 进行更新。有没有办法在不将 python 从 3.5 更新到 3.6 的情况下执行此操作,这与 tensorflow 不兼容?
您可以手动更新它们 conda update yourpackage
...或者您可以将它们全部更新 conda update --all
,然后使用 conda install python=3.5.2
再次降级 python。
简答
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个空格,所以包名是该行的第3个字段。这导致参数 -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
.
我是 python 的初学者,我使用的是旧版本的 anaconda,它具有 python 的 3.5.2 版本,因为我想使用它来使用 tensorflow。我有一些过时的软件包,我想使用 "conda update all" 进行更新。有没有办法在不将 python 从 3.5 更新到 3.6 的情况下执行此操作,这与 tensorflow 不兼容?
您可以手动更新它们 conda update yourpackage
...或者您可以将它们全部更新 conda update --all
,然后使用 conda install python=3.5.2
再次降级 python。
简答
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个空格,所以包名是该行的第3个字段。这导致参数 -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
.