在win系统下安装完成后,需要进行环境变量的配置
配置环境变量,把下面的4个目录全部加到PATH变量里面。
Anaconda安装目录的根目录\
Anaconda安装目录的根目录\Scripts
Anaconda安装目录的根目录\Library\bin
Anaconda安装目录的根目录\Library\mingw-w64\bin
例如:anaconda的安装目录为:C:\ProgramData\anaconda3
C:\ProgramData\anaconda3
C:\ProgramData\anaconda3\Scripts
C:\ProgramData\anaconda3\Library\bin
C:\ProgramData\anaconda3\Library\mingw-w64
查看有多少个环境?
conda info -e
Anaconda Prompt命令窗口下,输入python即可python,同时查看Python的版本。
输入print('haha'),即可执行代码。
输入exit()退出Python。
输入conda info可以查看当前虚拟环境的信息,比如:所在版本、目录,镜像源等。
查看conda版本
conda --version
查看conda的环境配置
conda config --show
设置镜像
conda有时候安装软件会非常慢。设置国内镜像的话可以使安装更快捷一些。设置方法如下所示:
#设置清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
#设置bioconda
conda config --add channels bioconda
conda config --add channels conda-forge
#设置搜索时显示通道地址
conda config --set show_channel_urls yes
查看安装源
conda config --show-sources
添加安装源
清华大学的:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
删除镜像源
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
设置安装Python软件包时显示镜像源地址
conda config --set show_channel_urls yes
更新conda
conda update conda
更新Anaconda整体
将整个Anaconda都更新到确保稳定性和兼容性的最新版本
conda update Anaconda
查询某个命令的帮助
conda create --help
管理环境
Conda允许你创建相互隔离的独立环境,这些环境被称之为虚拟环境(Virtual Environment),这些环境各自包含属于自己的文件、包以及他们的依存关系,并且不会相互干扰。
Anaconda有一个缺省的名为base的环境。但是不建议把程序放在base环境中,应该创建不同的虚拟环境分别管理不同的开发项目。
这个涉及到一个根本的问题:为什么我们需要虚拟环境呢?
举一个简单的例子,想象一下你有多个项目要开发,每个项目中都有一些包要依赖于某个共同的包,但是各自的所需要的版本不一致,有一些需要低版本的,有些需要高版本的。然后你就陷入了众口难调的困境。
为不同的项目创建虚拟环境就可以把不同项目隔离开来,各自使用自己所需要的软件环境。
创建虚拟环境
更改anaconda虚拟环境默认的安装位置:
conda config --add envs_dirs 路径
例如:
conda config --add envs_dirs d:\envs
使用conda创建虚拟环境的命令格式为:
conda create -n env_name python=3.8
这表示创建python版本为3.8、名字为env_name的虚拟环境。
创建后,env_name文件可以在Anaconda安装目录envs文件下找到。
在不指定python版本时,自动创建基于最新python版本的虚拟环境。
conda create:这是创建新环境的命令。
-n 或 --name:这是一个标志,用于指定要创建的环境的名称。
env_name:这是你给新环境起的名字。
python=3.8:这指定了在新环境中要安装的Python版本为3.8。
例如:
conda create -n fastapi python=3.10
查看有哪些虚拟环境
以下三条命令都可以。注意最后一个是”--”,而不是“-”.
conda env list
conda info -e
conda info --envs
所显示的列表中,前面带星号“*“的表示当前活动环境。
激活虚拟环境
使用如下命令即可激活创建的虚拟环境。
conda activate env_name
此时使用python --version可以检查当前python版本是否为所想要的(即虚拟环境的python版本)。
退出虚拟环境
使用如下命令即可退出当前工作的虚拟环境。
conda activate
conda deactivate
有意思的是,以上两条命令只中任一条都会让你回到base environment,它们从不同的角度出发到达了同一个目的地。
可以这样理解:
activate的缺省值是base,
deactivate的缺省值是当前环境,因此它们最终的结果都是回到base。
删除虚拟环境
执行以下命令可以将该指定虚拟环境及其中所安装的包都删除。
conda remove --name env_name --all
如果只删除虚拟环境中的某个或者某些包则是:
conda remove --name env_name package_name
删除指定的conda环境
通过环境名删除
conda remove --name 要删除的环境名 --all
通过指定环境文件位置删除(这个方法可以删除不同位置的同名环境)
conda remove -p 要删除的环境所在位置 --all
例如:
conda remove -p C:\Users\user_name\.conda\envs\env_name --all
复制conda环境
conda create --name 新环境名 --clone 被复制的环境名
例如:
conda create --name new_base --clone base
导出环境
很多的软件依赖特定的环境,我们可以导出环境,这样方便自己在需要时恢复环境,也可以提供给别人用于创建完全相同的环境。
#获得环境中的所有配置
conda env export --name myenv > myenv.yml
#重新还原环境
conda env create -f myenv.yml
导出当前虚拟环境到指定environment.yml文件
# 在当前目录下生成环境文件
conda env export > environment.yml
# 指定文件路径
conda env export > "environment.yml文件路径"
使用requirements.txt文件管理conda虚拟环境中的Python软件包
① 导出虚拟环境中的Python软件包到requirements.txt文件
conda list -e > requirements.txt
② 使用requirements.txt文件安装Python软件包
conda install --yes --file requirements.txt
conda从requirements.txt文件安装需求包
conda install --file requirements.txt --yes
conda指令执行技巧
在指令后输入-y或者--yes可以制动确认指令,避免后期再次输入y确认,例如:
# 自动创建python环境demo,并指定python版本为3.8
pip create --name demo python=3.8 --yes
# 自动安装numpy、pandas和matplotlib软件包
pip install numpy pandas matplotlib -y
包(Package)的管理
查询包的安装情况
查询看当前环境中安装了哪些包
conda list
查看指定环境中的Python软件包
conda list --name 环境名
显示当前环境中的指定包
conda list 包名
查询当前Anaconda repository中是否有你想要安装的包
conda search package_name
当然与互联网的连接是执行这个查询操作乃至后续安装的前提条件。
精确查找当前环境中可以安装的包
conda search --full-name 包的准确名字
模糊查找当前环境中可以安装的包
codna search 包的模糊名字
查询是否有安装某个包
用conda list后跟package名来查找某个指定的包是否已安装,而且支持*通配模糊查找。
conda list pkgname
conda list pkgname*
当然如果你确认是否有某个包的目的是要对其进行更新的话,那就直接执行conda update pkgname即可,如果该包没有安装的话,conda会报告PackageNotInstalledError错误(然后改用conda install即可)。
包的安装和更新
在当前(虚拟)环境中安装一个包:
conda install package_name
当然也可以如上所述在创建虚拟环境的同时安装包,但是并不建议。
安装完一个包后可以执行conda list确认现在列表中是否已经包含了新安装的包。
也可以以以下命令安装某个特定版本的包(以下例为安装0.20.3版本的numpy):
conda install numpy=0.20.3
conda命令在当前激活环境中安装需要的包
conda install 包名
# 例如:
conda install numpy
定conda环境安装制定版本的包
# 注意这里的版本号不是必须的
conda install --name 环境名 要安装的包名=版本号
可以用以下命令将某个包更新到它的最新版本 :
conda update numpy
安装包的时候可以指定从哪个channel进行安装,比如说,以下命令表示不是从缺省通道,而是从conda_forge安装某个包。
conda install pkg_name -c conda_forge
conda-forge
是一个社区驱动的 Conda 通道,它提供了一个广泛的软件包集合,这些软件包通常比官方 Anaconda 通道中的软件包更新更频繁,并且包含了许多官方通道中可能找不到的软件包。
当你使用 conda install -c conda-forge some-package
这样的命令时,你正在告诉 Conda 从 conda-forge
通道中查找并安装 some-package
。这里的 -c
或 --channel
参数用于指定软件包的来源通道。
conda-forge
通道是由全球开发者社区维护的,它不仅包括 Python 软件包,还包括其他语言的软件包以及科学计算和数据科学领域所需的许多工具和库。由于其社区性质,conda-forge
经常能更快地提供软件包的新版本,而且对于一些小众或最新的项目,conda-forge
可能是唯一提供这些软件包的 Conda 通道。
因此,如果你在官方 Anaconda 通道中找不到需要的软件包版本,或者需要一个更新的版本,那么使用 conda-forge
通道往往是一个很好的选择。不过,由于 conda-forge
通道中的软件包可能更新频繁,有时也可能遇到兼容性问题,尤其是当与其他通道中的软件包结合使用时。在这种情况下,你可能需要仔细检查软件包的依赖关系,以确保它们能够协同工作。
conda卸载包
conda uninstall package_name
这样会将依赖于这个包的所有其它包也同时卸载。
如果不想删除依赖其当前要删除的包的其他包:
conda uninstall package_name --force
但是并不建议用这种方式卸载,因为这样会使得你的环境支离破碎,如以下(conda manual description原文)所述:
一个直观的理解就是,如果一个包A被删除了,而依赖于它的包B、C等却没有删除,但是那些包其实也已经不可用了。
另一方面,之后你又安装了A的新版本,而不幸的是,B、C却与新版本的A不兼容因此依然是不可用的。
清理anaconda缓存
conda clean -p
# 删除没有用的包 --packages
conda clean -t
# 删除tar打包 --tarballs
conda clean -y -all
# 删除所有的安装包及cache(索引缓存、锁定文件、未使用过的包和tar包)
关于清除命令的更详细的说明,可以执行以下命令进行查询:
conda clean -h
conda就像个守财奴一样,把每个历史安装包都会好好保存。
好处是可以很方便地恢复到旧的历史版本,坏处是占内存空间。
Python版本的管理
除了上面在创建虚环境时可以指定python版本外,Anaconda基环境的python版本也可以根据需要进行更改。
将版本变更到指定版本
conda install python=3.5
更新完后可以用以下命令查看变更是否符合预期。
python --version
将python版本更新到最新版本
如果你想将python版本更新到最新版本,可以使用以下命令:
conda update python
conda install vs pip install,有什么区别?
conda可以管理非python包,pip只能管理python包。
conda自己可以用来创建环境,pip不能,需要依赖virtualenv之类的。
conda安装的包是编译好的二进制文件,安装包文件过程中会自动安装依赖包;pip安装的包是wheel或源码,装过程中不会去支持python语言之外的依赖项。
conda安装的包会统一下载到一个目录文件中,当环境B需要下载的包,之前其他环境安装过,就只需要把之间下载的文件复制到环境B中,下载一次多次安装。pip是直接下载到对应环境中。
conda只能在conda管理的环境中使用,例如比如conda所创建的虚环境中使用。pip可以在任何环境中使用,在conda创建的环境 中使用pip命令,需要先安装pip(conda install pip ),然后可以 环境A 中使用pip 。
conda 安装的包,pip可以卸载,但不能卸载依赖包,pip安装的包,只能用pip卸载。
pip和conda在安装软件包时,在依赖关系方面的处理机制不同。
pip在递归的串行循环中安装依赖项,不会确保同时满足所有软件包的依赖关系,如果按顺序较早安装的软件包相对于按顺序较晚安装的软件包具有不兼容的依赖项版本,则可能导致环境以微妙的方式被破坏掉;
conda使用SAT(satisfiability)solver来验证是否满足环境中安装的所有软件包的所有要求,只要有关依赖项的软件包元数据正确,conda就会按预期产生可用的环境。
能否混用conda和pip?
首先,不建议混用。
混用容易导致库的依赖关系出现混乱,然后突然哪天环境可能就崩了,安装不了新的包,无法进行conda update之类的。
其次,由于conda的库确实不如pip的库丰富{很多包只在 pip 有:PYPI有15万可用包,而Anaconda repository中(使用conda命令安装)提供了1,500多个软件包,Anaconda cloud上(使用conda-forge或bioconda命令安装)的几千种其他软件包。},
所以有时候可能迫不得已要使用pip安装。
切记,只有在conda install搞不定时才使用pip intall。
而且,最后使用虚拟环境进行环境隔离。
安装在哪里?
conda install xxx:这种方式安装的库都会放在anaconda3/pkgs目录下,这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。
pip install xxx:分两种情况:
一种情况就是:当前conda环境的python是conda安装的,和系统的不一样,那么xxx会被安装到anaconda3/envs/current_env/lib/python3.x/site-packages文件夹中。
另外一种情况是:如果当前conda环境用的是系统的python,那么xxx会通常会被安装到~/.local/lib/python3.x/site-packages文件夹中。
如何判断conda中某个包是通过conda还是pip安装的?
执行 conda list ,用pip安装的包显示的build项目为pypi。
conda configuration
conda的配置文件为".condarc",该文件在安装时不是缺省存在的。但是当你第一次运行conda config命令时它就被自动创建了。".condarc"配置文件遵循简单的YAML语法。
condarc文件在哪儿?
执行conda info,会有信息显示。
conda info
在windows系统下,一般在 C:\Users\用户名\ 目录下面,文件名为: .condarc
C:\Users\用户名\.condarc # windows系统
/home/用户名/.condarc # 对于 Linux 发行版
/Users/用户名/.condarc # 对于 macOS
".condarc"文件示例1:
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/- conda-forge- defaults
show_channel_urls: true
channel_priority: strict
".condarc"文件示例2:
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- conda-forge- defaults- bioconda
show_channel_urls: true
channel_priority: strict
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- 针对MSYS2相关的包,清华镜像。
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
- 生物信息学相关的包,清华镜像。
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- 社区驱动的包仓库,清华镜像。
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- Anaconda官方的主要包集合,清华镜像。
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- Anaconda官方的免费包集合,清华镜像。
conda-forge - 社区驱动的包仓库,直接指向conda-forge。
defaults - Anaconda官方的默认包集合,通常包括一些基础和常用的包。
bioconda - 生物信息学相关的包,直接指向bioconda。
show_channel_urls: true 这一行配置意味着当你使用conda命令时,Conda将会显示它正在从哪些频道中搜索和下载包。
channel_priority: strict 则指定了严格的频道优先级,这意味着Conda会严格遵循你在channels列表中设定的顺序来查找包,而不是可能从其他源找到相同版本的包。
一旦在优先级较高的频道中找到了匹配的包,Conda就不会再从后续的频道中查找相同的包。
总结来说,这个配置会使得Conda优先从清华镜像中搜索包,之后才转向其他频道。
这种配置对于国内用户来说是非常实用的,因为清华镜像通常能提供更快的下载速度。
同时,将conda-forge和bioconda放在稍低的位置,但仍然比defaults优先,保证了能够访问到这两个频道中可能独有的包。
Channel管理
追加conda-forge channel:
conda config --add channels conda-forge
移除conda-forge channel:
conda config --remove channels conda-forge
查询当前配置中包含哪些channels:
conda config --get channels
VSCode下,如果使用conda的虚拟环境?
在VSCode软件的上部中间,输入
>python:sel
选择上图中的 Python:Select Interpreter即可进行选择,见下图:
如果不想每次都进行配置,就需要创建launch.json,见下图。
点击“launch.json”后,选择Python Debugger,见下图:
创建完成的“launch.json”文件,见下图:
{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Python 调试程序: 当前文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal"}]
}