跳转至

Env

问题

听说Anaconda很好用, 但是更新了2020.11版本后启动python总是报一些警告, 比如在powershell里启动Python的时候:

Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated.  Libraries may fail to load.  To activate this environment
please see https://conda.io/activation

所以conda环境是啥?

还有就是用pip安装需要的包的时候会被告知"目录没有写权限", 这是为啥?

总而言之, 都是conda环境的原因.

首先, 需要在powershell里启用conda环境:

conda init powershell

此时powershell提示符从PS E:\>变成了(base) PS E:\>, 这说明我们成功进入了condabase环境. 此时再启动Python就没有警告了.

但是, 在输入conda install tensorflow之后又报了一个inconsistent错误, 大意是tensorflow及其依赖包与现有环境中的 4 个包不相容, 这就需要一个全新的conda环境,

不急, 先把镜像配上, 省得下载速度把自己感动到脱发, 具体操作见https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
conda clean -i

重启shell, 键入以下命令生成新的conda环境

conda create -n tensorflow python=3.8 tensorflow

conda会在安装目录下生成envs\tensorflow目录并开始下载python并安装TensorFlow及各项依赖. 注意这里的前一个tensorflow只是一个环境名, 后一个tensorflow才是真正要装的包. 如果你正确配置了镜像的话下载应该是很快的. 如果conda下载速度很慢, 请花些时间检查一下镜像配得对不对, 会给你省很多等待的时间和失败的次数.

不要把python版本设得太高, 也不要用python 2.x了.

注意这里又是一个大坑, 如果在安装Anaconda的时候勾选了了Add to PATH选项, 现在conda就不会正常工作了. 具体说来, Add to PATHPATH中添加的是base环境的包, 而当使用conda activate tensorflow切换到tensorflow环境之后使用python命令, 优先解析PATH中的python(即Anaconda目录下的亦即base环境中的python) 而不是tensorflow环境下的python, 此时, 如果base里没有tensorflow, 那么import tensorflow就会找不到module, 这就是开头的警告产生的原因.

接下来再在新环境中安装一些开发用的包吧.

conda install jupyterlab spyder

最后, 尽善尽美, 让powershell一打开就进入tensorflow环境:

echo "conda activate tensorflow" >> $profile

总结:

  1. 每次操作都要重启shell以使操作生效.

此外:

  1. 可以考虑Miniconda, 毕竟Anaconda里有那么多包用不上, 而且换个环境还要重新装包. 不过Miniconda推荐给有经验的同学.

  2. conda想重命名环境, 怎么办?

conda create --name newname --clone oldname
conda remove --name oldname --all