网上部分 Miniconda/Anaconda 安装配置教程都是上古时期的,而且被抄来抄去,里面一些错误和疏漏也很少有人补充,对俺这样的小白极不友好。所以很有必要发文记录下 博主在 Windows 中安装配置 Miniconda 时遇到的问题和解决办法,尤其是 conda activate 激活环境出错的坑,以备后期查询。
相比用 virtualenv 来创建不同 python 环境、pyenv 管理不同 python 版本,Conda 结合了两者的功能,而且和 pip 一样能进行包管理,更值得称道的是 Conda 具有强大的包依赖处理能力,在安装 scrapy、numpy、scipy、torch、tensorflow 等需要各种依赖的模块时,Conda 可轻松处理,不像 pip 可能直接忽略依赖导致安装错误。
Anaconda 相当于是个“威力加强版”的 Python,免费开源且跨平台,支持 Windows、MacOS、Linux。主要用于计算科学(数据科学、机器学习、大数据处理和预测分析等),安装好的 Anaconda 里包含 Python、180多个用于科学计算的包及其依赖项、Conda、Anaconda Navigator 图形界面、Jupyter Notebook、Spyder、Qtconsole 等等,安装包 500M 左右,完整安装后可能有 2~3 个G。
顾名思义,Miniconda 是个精简版的 Anaconda,里面只有 Conda 和 Python,安装包 50M,安装后占用磁盘不到 600M。当然,Miniconda 没有图形界面,Conda 操作都在命令行中进行。但这已经完全够用了,与 PyCharm 一起使用,同样可以撸的飞起。
所以,Miniconda/Anaconda 比 virtualenv 更占磁盘空间,尤其是在 Linux 下,每次 conda create 创建虚拟环境,会完整的安装一个对应版本的 Python 和其必需模块;而 virtualenv 则会使用符号链接来减少环境规模。
Conda 不是 Python 的专属,它可用于 Python、R、Ruby、Lua、Scala、Java、JavaScript、C/C++、FORTRAN 等各种语言的包、依赖和环境管理。同样是开源和跨平台的。
网上有关 Conda 的教程非常多且详细,暂不赘叙,可查看文末参考资料或 conda 文档。这里要记录一个困扰博主很久,但经常会被大佬们一笔带过的问题:
创建环境: conda create -n env-name python=3
,在指定一个具体 Python 版本时,会新建一个带对应版本 Python 解释器、为名 env-name 的虚拟环境。使用 conda list
可以看到默认安装了很多包,包括我们的 Python 在内,这里 Python 也被当成一个包。可以使用 conda create --no-default-packages -n myenv python
来创建一个不带任何默认包的 Python 环境。
如果不带上 Python 参数,即 conda create -n env-name
来创建环境,在这个虚拟环境里 conda list 没有任何包(当然也无法在 PyCharm 中导入),此时键入 python --version
,可以看到它使用的是系统环境变量里指定的 Python 版本;如没有安装过全局 Python,则是 base 环境中的版本。个人理解,貌似此时还不能叫它 Python 环境,因为可以 conda install 安装 nodejs 或 java-jdk,来创建其他语言环境。当然,此时用 conda install requests 或安装任意 Python 模块都会自动安装一个新的 Python 发行版。
Miniconda 结合 PyCharm 使用,在 Settings -- Project:xxx -- Python interpreter 中添加一个 Conda Environment:选择 New environment 可在 PyCharm 中新建一个虚拟环境,location 位置可自定义,通常放在 Miniconda 安装目录的 envs 文件夹中,Python version 选需要的版本,Conda executable 选择 Miniconda 安装目录中 Scripts 文件夹里的 conda.exe。
同理,如果已在命令行中使用 conda create 新建了虚拟环境,则 PyCharm 设置时,选择已存在的环境 Existing environment,Interpreter 项选择 Miniconda 安装目录 envs 文件夹中对应环境目录中的 python.exe,Conda executable 同上步一样是 conda.exe。
如无需要,可不用勾选 Make available to all projects。勾选后,在此虚拟环境下安装包的时候,会复制到全局环境。
1、博主此时的系统为 Windows 10 专业版;Miniconda 版本为:Miniconda3-py38_4.8.3-Windows-x86_64。可到 Miniconda 官方或清华大学开源软件镜像站下载。安装 Miniconda 前并不需要安装 Python,里面有了。
2、下载安装,自定义安装目录时会提示:“建议不要放在名字包含空格的目录中”,其他都按默认选项即可。
3、修改 conda 源,俺暂时只添加了清华大学源里的 Conda Forge 仓库镜像(更多源查看Anaconda 镜像使用帮助),使用如下命令即可:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
同时可编辑用户目录里的 .condarc 文件,删掉 channels 下的 default,以免初始化时太卡。
4、Windows 10 成功安装 Miniconda 后,可直接用开始菜单里的两个快捷方式,Anaconda Powershell Prompt (miniconda3) 或 Anaconda Prompt (miniconda3) 进入命令行来执行 conda 命令。
将 conda 添加到环境变量,则可在 cmd 或 PowerShell 中执行conda 命令:此电脑--右键--属性--高级系统设置--环境变量,在上面的用户变量中找到 Path 变量,新建三个环境变量如下,修改D:\miniconda3 为 Miniconda 具体安装目录。
1 2 3 |
|
5、出现错误:Windows 中的 Conda 无法使用 activate env 切换环境。
正常情况下,Windows 下成功安装并配置环境变量后,在 cmd 或 PowerShell 中用 activate myenv
即可激活切换不同环境,但博主碰到了问题:activate myenv 虽然可以执行成功,但 conda env list
发现并没有切换到指定环境。
而执行 conda activate myenv 时又出现如下 CommandNotFoundError 的错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
按照上面提示,执行 conda init PowerShell 和 conda init cmd.exe 来初始化命令行环境。
但博主设置后,发现 cmd 下正常,但打开 PowerShell 又出现错误:
1 2 3 |
|
这是因为初始化 PowerShell 后,其默认的脚本执行策略被设置成了“受限制的”,可按如下步骤解决:
1、打开一个 PowerShell ,执行命令 set-ExecutionPolicy RemoteSigned
2、出现下面提示,更改执行策略时选择“Y”,重新启动 PowerShell 即可。
1 2 3 4 5 |
|
最后经过一番折腾,Windows 下的 Miniconda 在 cmd 或 PowerShell 中均可正常使用 conda activate myenv 来切换 Python 虚拟环境了。
参考资料:
» 本文来自:乌帮图 » 《Windows 下 Miniconda 安装配置记录》
» 链接地址:https://wbt5.com/windows-miniconda.html »英雄不问来路,转载请注明出处。