我是 python 的初学者,我使用的是旧版本的 anaconda,它有 3.5.2 版本的 python,因为我想使用 tensorflow。我有一些过时的软件包,我想用“conda update all”进行更新。有没有办法在不将 python 从 3.5 更新到 3.6 的情况下做到这一点,这与 tensorflow 不兼容?
问问题
2947 次
3 回答
6
简答
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
于 2019-10-30T08:29:49.137 回答
2
您可以手动更新它们conda update yourpackage
...或者您可以全部更新它们conda update --all
,然后再次使用conda install python=3.5.2
.
于 2017-05-03T07:31:02.227 回答
1
另一个简单的方法:conda update --all python=3.5.2
将 python 版本替换为您当前安装的版本。这将更新所有包,并且由于python
已经安装了目标版本,因此不会更新。这也适用于多个包:conda update all python=3.5.2 spyder=3.3.6
.
于 2021-09-13T08:20:30.137 回答