Anaconda:如何安全地删除重复的包

时间:2018-01-11 15:59:25

标签: python anaconda

我有一个Anaconda虚拟环境,我在其中多次安装了许多Python软件包,通常使用不同的版本,例如:

$ conda list
...
singledispatch            3.4.0.3                  py35_0  
sip                       4.18                     py35_0  
six                       1.10.0                    <pip>
six                       1.11.0                    <pip>
six                       1.10.0                   py35_0  
snowballstemmer           1.2.1                    py35_0  
sockjs-tornado            1.0.3                    py35_0  
sphinx                    1.5.4                    py35_0  
spyder                    3.1.3                    py35_0  
sqlalchemy                1.1.9                    py35_0  
sqlite                    3.13.0                        0  
statsmodels               0.8.0               np111py35_0  
sympy                     1.0                      py35_0  
tensorflow-gpu            1.3.0                     <pip>
tensorflow-gpu            1.0.1                     <pip>
tensorflow-tensorboard    0.1.6                     <pip>
terminado                 0.6                      py35_0  
testpath                  0.3                      py35_0  
Theano                    0.9.0                     <pip>
tk                        8.5.18                        0  
toolz                     0.8.2                    py35_0  
tornado                   4.4.2                    py35_0  
tqdm                      4.11.2                    <pip>
tqdm                      4.15.0                   py35_0  
traitlets                 4.3.2                    py35_0  
unicodecsv                0.14.1                   py35_0  
wcwidth                   0.1.7                    py35_0  
werkzeug                  0.12.1                   py35_0  
Werkzeug                  0.12.2                    <pip>
wheel                     0.29.0                    <pip>
wheel                     0.30.0                    <pip>
wheel                     0.29.0                   py35_0  
...

我不知道我是如何进入这种状态的,但我怎样才能安全地摆脱重复的包裹呢?

此外,如果程序导入six包,Python如何确定要导入的版本?

修改 我现在知道问题来自哪里。我可能使用pip&#39; --ignore-installed选项安装了一些软件包。我是否对这样安装的所有副本都很好或者我应该摆脱它们吗?

5 个答案:

答案 0 :(得分:5)

如果您不需要其中任何一个的特定版本,那么我会尝试conda update conda,它应删除所有旧软件包,安装最新版本,并将最新版本设置为默认版本。否则,您始终可以使用conda remove <pkg-name>删除所有副本,并使用conda install <pkg-name>安装最新版本并替换旧版本。您还可以使用pip install <pkg-name>==<version>安装特定版本(例如,pip install keras==1.2)。这个link也很有帮助。

答案 1 :(得分:2)

我有同样的问题。正如Mehdi所建议的那样,我发现最好创建一个新的conda环境。有关详情,请参见this link。您可以将需求简单地放在yaml文件中,如下所示:

name: my_name

dependencies:
  - numpy
  - python=3.6.0=0
  - pandas
  - ipython
  - matplotlib
  - pip:
    - click==6.6
    - keras==1.2

,然后运行以下命令(例如,上面的文件另存为env.yaml):

conda env create -n my_name -f env.yml
source activate my_name

答案 2 :(得分:1)

conda clean

一些命令参数

--lock, --tarballs, --index-cache, --packages, --source-cache, --all

参考: - https://conda.io/docs/commands/conda-clean.html

答案 3 :(得分:1)

我遇到了同样的问题,我想删除在conda环境中通过pip安装的所有软件包。您可以使用以下这种方法:

conda list | grep '<pip>' | tr -s [:blank:] | cut -d' ' -f1 | xargs -d'\n' pip uninstall -y

如果您使用的是macOS,则需要brew install findutils并将xargs更改为gxargs

答案 4 :(得分:0)

对于初学者来说,本教程可能会有用

conda clean --all

https://youtu.be/GNd_em2IzW4