除了python之外,Conda更新包

时间:2017-05-03 07:21:56

标签: python package conda update-all

我是python的初学者,我使用的是旧版本的anaconda,它有3.5.2版本的python,因为我想使用tensorflow。我有一些过时的软件包,我想用“conda update all”更新。有没有办法在不将python从3.5更新到3.6的情况下执行此操作,这与tensorflow不兼容?

2 个答案:

答案 0 :(得分:1)

您可以手动更新所有内容conda update --all

...或者您可以更新所有conda install python=3.5.2,然后使用var express = require("express"); var router = express.Router(); var mongojs = require("mongojs"); //var mongo_db = //mongojs("mongodb://xxxxx:xxxxx@some_adress/cat_mean_db", ["tasks"]); var mongo_db = mongojs("mongodb://xxxxx:xxxxx@localhost:3000/cat_db", ["tasks"]); //get all docs(pages) router.get("/tasks", function (req, res, next ) { mongo_db.tasks.find(function (error, tasks) { if(error) res.send(error); res.json(tasks); }); }); 再次降级python。

答案 1 :(得分:0)

简短回答

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