我有一个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
选项安装了一些软件包。我是否对这样安装的所有副本都很好或者我应该摆脱它们吗?
答案 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
答案 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)