为了账号安全,请及时绑定邮箱和手机立即绑定

使用conda安装软件包如何更改我的python版本并删除co​​nda?

/ 猿问

使用conda安装软件包如何更改我的python版本并删除co​​nda?

繁花不似锦 2020-02-01 17:11:44

我曾经在蟒蛇2.7中使用Anaconda


$ python

Python 2.7.14 |Anaconda custom (64-bit)| (default, Dec  7 2017, 17:05:42) 

[GCC 7.2.0] on linux2

Type "help", "copyright", "credits" or "license" for more information.

当我决定安装tensorflow时(由于某种原因,我使用了非gpu版本)


我使用的命令是:


$ conda install -c anaconda tensorflow-gpu

但是,完成后(有关此cmd的输出的详细信息),我不再需要conda了:


$ conda install -c conda-forge keras

Traceback (most recent call last):

  File "/home/me/anaconda2/bin/conda", line 12, in <module>

    from conda.cli import main

ModuleNotFoundError: No module named 'conda'

(注意:我也不再拥有Keras),现在正在运行Python 3.7(!?):


$ python

Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34) 

[GCC 7.3.0] on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> 

发生了什么?如何阻止它再次发生?这之前发生过一次,我最终删除了所有anaconda文件,然后重新安装。我不想养成这种习惯。


我的输出conda install是:


$ conda install -c anaconda tensorflow-gpu

Collecting package metadata: done

Solving environment: done


## Package Plan ##


  environment location: /home/me/anaconda2


  added / updated specs:

    - tensorflow-gpu



The following packages will be downloaded:


    package                    |            build

    ---------------------------|-----------------

    _tflow_190_select-0.0.1    |              gpu           2 KB  anaconda

    absl-py-0.7.0              |           py36_0         156 KB  anaconda

    astor-0.7.1                |           py36_0          43 KB  anaconda

    c-ares-1.15.0              |       h7b6447c_1          98 KB  anaconda

    ca-certificates-2018.12.5  |                0         123 KB  anaconda

    certifi-2018.11.29         |           py36_0         146 KB  anaconda

    cudatoolkit-9.0            |       h13b8566_0       340.4 MB  anaconda

    cudnn-7.1.2                |        cuda9.0_0       367.8 MB  anaconda

    cupti-9.0.176              |                0         1.6 MB  anaconda

查看完整描述

1 回答

?
慕雪6442864

原因

在不更新conda软件包的情况下更改Python版本会破坏Conda。。Python版本更改(2.7.14-> 3.6.8)造成了这样一种情况,即新版本python具有site-packages不再包含conda软件包的新版本,而如果仅在2.7.x内进行更新,则不会有问题。


Conda包含一组二进制文件(例如,conda在shell中键入时要调用的二进制文件)和同名的Python包。Python包对于整个Conda来说是必需的,并且在您尝试使用时都会加载它conda。


有问题的是,Anaconda上的许多软件包似乎正在触发Python版本更改,但随后没有触发conda软件包更新。这听起来像是依赖解析器所忽略的东西-即,默认行为应该是保护所居住的基本环境的完整性conda。


尝试恢复

恢复的一种可能方法是临时使用的独立版本conda-exec来修复基本环境。您可以从任何目录执行以下所有操作,因此可以使用临时文件,也可以放置下载内容的任何位置。如果可行或需要调整,请在评论中报告!


下载适合您平台的Conda(在此我们将使用conda-latest-linux-64.exe)。别介意.exe这是一个二进制文件,应该在外壳程序中运行时运行。conda-exec无论如何,我都会将其重命名为:


wget -O conda-exec https://repo.anaconda.com/pkgs/misc/conda-execs/conda-latest-linux-64.exe

chmod +x conda-exec

暂时设置CONDA_ROOT_PREFIX为您的安装基础。通常是anaconda3or miniconda3文件夹;在这种情况下,我们将使用OP给定的路径:


export CONDA_ROOT_PREFIX=/home/me/anaconda2

测试它是否有效:


./conda-exec info

要检查的关键是base environment:正确识别基本环境所在并将其显示为(writable)。你也应该看到pkgs在你的文件夹基地在ENV package cache:。


选项1:还原到先前的修订

在当前版本之前确定版本(我们将<k-1>在此处表示),并尝试将其还原:


./conda-exec list -n base --revisions

./conda-exec install -n base --revision <k-1>

如果这可行,则应该完成。启动一个新的外壳,然后conda再次尝试使用。否则,另一个选择是...


选项2:安装conda最新的Python

(重新)将conda软件包安装在基本环境中:


./conda-exec install -n base conda

确保建议的Conda构建与当前安装的Python版本相对应。--force-reinstall如果该标记声称已满足要求,则可能会很有用。


尝试一个新的外壳,看看是否conda正常。您不需要保持conda-exec周围。


最后求助

如果其他所有方法均失败,则可能只需要重新安装即可。其他人报告说已安装在其他目录中,并且仍然可以使用和访问其env。


预防措施

通过更好的实践避免破损

首先,只是一般的(自以为是)建议:充分利用虚拟ENVS更多。这并不能直接解决问题,但是可以帮助您拥有一个工作流,该工作流不那么容易遇到此类陷阱。首先你不应该接受这样一个巨大的变化,而不是基地。就个人而言,我很少在基础架构之外的基础上安装东西(emacs,与jupyter相关的东西,conda等)。1 软件包包含在特定于项目的环境中,或者至少在开发类型的环境中。


例如,如果我正在显示安装,我会为其创建一个新的环境


conda create -n tf36 anaconda::tensorflow-gpu python=3.6

或您实际希望使用的任何Python版本。


直接解决方案:固定

Conda确实支持软件包固定,这是一种更直接的方法,可通过将Python 2过渡到3,来确保您永远不会破坏基础安装。即,在env的conda-meta文件夹中创建一个文件,pinned并添加以下行


python 2.7.*

请注意,一些用户报告了3.6-> 3.7过渡的类似问题,因此我认为此处必须包含次要版本。请参阅有关固定的文档。


[1]请注意,我使用的是Miniconda,而不是Anaconda安装程序,因此从一开始我就对基础有了更多的控制。


查看完整回答
反对 回复 2020-02-01

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信