之前在Windows上面进行程序写作和运行的时候,使用的都是原生的Python和pip,但自从开始学习深度学习时,发现很多项目都是在Conda环境下进行的,于是我也在Windows上下载了Conda,我选择的时Miniconda。
这就出现了一个问题,在命令行中运行python是调用的什么呢?两者会不会出现什么冲突?
Windows 下同时安装了Python和Conda 首先吐槽一下微软,目前Windows下的CMD还没有被powershell完全替代掉,一部分命令在powershell上面并不能运行。另外,在Windows Terminal上,powershell的代码高亮做的很好但是不能显示当前的python环境;CMD上面没有代码高亮,但是能显示python环境。所以两者都不算完美。
更新: 这个问题可以解决,在Terminal中运行conda init powershell
,然后重启Terminal之后就可以了! 参考:解决Powershell前面没有base,无法激活虚拟环境问题
CMD与Powershell 命令提示符是在操作系统中,提示进行命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。 在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。输入一些命令,cmd.exe可以执行,比如输入shutdown -s就会在30秒后关机。总之,它非常有用。打开方法:开始-所有程序-附件 或 开始-寻找-输入:cmd/cmd.exe 回车。它也可以执行BAT文件。
PowerShell 是一种跨平台的任务自动化和配置管理框架,由命令行管理程序和脚本语言组成。 与大多数接受并返回文本的 shell 不同,PowerShell 构建在 .NET 公共语言运行时 (CLR) 的基础之上,接受并返回 .NET 对象。 这一根本上的改变引入了全新的自动化工具和方法。
最浅显的区别就是:CMD写的BAT脚本我们看作是面向过程的,直白点说就是你是从计算机执行的流程来编写脚本的。而PowerShell则是面向对象的,是一种站在使用者的角度进行脚本的编写.
功能上:
CMD只能执行基本的任务,本身并没有集成太多的功能,大多依赖于第三方的程序,比如PING命令,其实是一个单独的应用程序,而不是CMD本身的一条命令。
PowerShell因为是基于.NET面向对象的,而且本身就内置了非常多的命令。使得它不管从功能上还是性能上都要比CMD要强大得多。
可以这么说,CMD能办的事,PowerShell基本都就能办,但PowerShell能办的事,CMD遥不可及。
目前唯一CMD比PowerShell强的一点就是所有版本的Windows中都自带有CMD,包括XP和2003这些很老的操作系统,而PowerShell要在XP和2003里用起来,就需要使用安装包安装.但这不熟于技术范畴,只是目前的环境造就了这个优势,而且不久的将来,这个微弱的优势也将不复存在,因为新版本的Windows中都已经内置了PowerShell了。
where python
1 2 3 4 5 6 7 C:\Users\DELL>where python D:\Miniconda\python.exe //自己下载的Miniconda D:\Python\Python3.8.6\python.exe //自己下载的原生Python C:\Users\DELL\AppData\Local\Microsoft\WindowsApps\python.exe //在Microsoft Store 下载的Python3.7 即使卸载了也删不掉,并且也用不了,不管了。 C:\Users\DELL>where python3 C:\Users\DELL\AppData\Local\Microsoft\WindowsApps\python3.exe //在Microsoft Store 下载的Python3.7 即使卸载了也删不掉,并且也用不了,不管了。
可以看到,我的计算机中有两个Python(不管MS store中下载的那个)。
在命令行中直接进入Python环境,系统选择的是哪个python呢?
1 2 3 4 5 6 7 8 9 10 C:\Users\DELL>python Python 3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32 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 Type "help" , "copyright" , "credits" or "license" for more information. >>>
可以看到,Terminal调用的是Miniconda的环境。
在配置环境变量时,可以选择Python和Conda的先后顺序,Terminal默认调用的是位于前面的那个环境。
只是偶尔使用python写一下小程序的话,我感觉电脑上只需要配置python的环境就可以了。但是如果要进行复杂的程序开发的话,比如深度学习之类的,我感觉使用conda比python要更好。
未来我可能会只选择使用Conda!!!
Conda虚拟环境的切换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 C:\Users\DELL>conda env list base * D:\Miniconda aipy38 D:\Miniconda\envs\aipy38 C:\Users\DELL>conda info active environment : None shell level : 0 user config file : C:\Users\DELL\.condarc populated config files : conda version : 4.9.2 conda-build version : not installed python version : 3.8.5.final.0 virtual packages : __cuda=11.6=0 __win=0=0 __archspec=1=x86_64 base environment : D:\Miniconda (writable) channel URLs : https://repo.anaconda.com/pkgs/main/win-64 https://repo.anaconda.com/pkgs/main/noarch https://repo.anaconda.com/pkgs/r/win-64 https://repo.anaconda.com/pkgs/r/noarch https://repo.anaconda.com/pkgs/msys2/win-64 https://repo.anaconda.com/pkgs/msys2/noarch package cache : D:\Miniconda\pkgs C:\Users\DELL\.conda\pkgs C:\Users\DELL\AppData\Local\conda\conda\pkgs envs directories : D:\Miniconda\envs C:\Users\DELL\.conda\envs C:\Users\DELL\AppData\Local\conda\conda\envs platform : win-64 user-agent : conda/4.9.2 requests/2.25.1 CPython/3.8.5 Windows/10 Windows/10.0.19041 administrator : False netrc file : None offline mode : False
Conda比原生python的好处在于,conda可以建立很多虚拟环境,实现库隔离!
Terminal-CMD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 C:\Users\DELL>conda activate base (base) C:\Users\DELL>pip -V pip 20.2.4 from D:\Miniconda\lib\site-packages\pip (python 3.8) (base) C:\Users\DELL>conda deactivate C:\Users\DELL>conda activate aipy38 (aipy38) C:\Users\DELL>pip -V pip 21.2.2 from D:\Miniconda\envs\aipy38\lib\site-packages\pip (python 3.8) (aipy38) C:\Users\DELL>pip list Package Version ---------------------------- ------------------- absl-py 1.0.0 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0 asttokens 2.0.5 astunparse 1.6.3 attrs 21.4.0 backcall 0.2.0 beautifulsoup4 4.10.0 bleach 4.1.0 cachetools 5.0.0 certifi 2021.10.8 cffi 1.15.0 chardet 3.0.4 colorama 0.4.4 cycler 0.11.0 d2l 0.17.4 d2lzh 1.0.0 debugpy 1.5.1 decorator 5.1.1 defusedxml 0.7.1 entrypoints 0.4 executing 0.8.3 flatbuffers 2.0 gast 0.5.3 google-auth 2.6.2 google-auth-oauthlib 0.4.6 google-pasta 0.2.0 grpcio 1.45.0 h5py 3.6.0 idna 2.6 importlib-metadata 4.11.3 importlib-resources 5.4.0 ipykernel 6.9.2 ipython 8.1.1 ipython-genutils 0.2.0 ipywidgets 7.7.0 jedi 0.18.1 Jinja2 3.0.3 jsonschema 4.4.0 jupyter 1.0.0 jupyter-client 7.1.2 jupyter-console 6.4.3 jupyter-core 4.9.2 jupyterlab-pygments 0.1.2 jupyterlab-widgets 1.1.0 keras 2.8.0 Keras-Preprocessing 1.1.2 kiwisolver 1.4.0 libclang 13.0.0 Markdown 3.3.6 MarkupSafe 2.1.1 matplotlib 3.4.0 matplotlib-inline 0.1.3 mccabe 0.6.1 mistune 0.8.4 nbclient 0.5.13 nbconvert 6.4.4 nbformat 5.2.0 nest-asyncio 1.5.4 notebook 6.4.10 numpy 1.22.2 oauthlib 3.2.0 opt-einsum 3.3.0 packaging 21.3 pandas 1.2.4 pandocfilters 1.5.0 parso 0.8.3 pickleshare 0.7.5 Pillow 9.0.1 pip 21.2.2 prometheus-client 0.13.1 prompt-toolkit 3.0.28 protobuf 3.20.0 psutil 5.9.0 pure-eval 0.2.2 pyasn1 0.4.8 pyasn1-modules 0.2.8 pycparser 2.21 Pygments 2.11.2 pyparsing 3.0.7 pyrsistent 0.18.1 python-dateutil 2.8.2 pytz 2022.1 pywin32 303 pywinpty 2.0.5 pyzmq 22.3.0 qtconsole 5.2.2 QtPy 2.0.1 requests 2.25.1 requests-oauthlib 1.3.1 rsa 4.8 scipy 1.8.0 Send2Trash 1.8.0 setuptools 58.0.4 six 1.16.0 soupsieve 2.3.1 stack-data 0.2.0 tensorboard 2.8.0 tensorboard-data-server 0.6.1 tensorboard-plugin-wit 1.8.1 tensorflow 2.8.0 tensorflow-io-gcs-filesystem 0.24.0 termcolor 1.1.0 terminado 0.13.3 testpath 0.6.0 tf-estimator-nightly 2.8.0.dev2021122109 toml 0.10.2 torch 1.8.1+cu111 torchaudio 0.8.1 torchvision 0.9.1+cu111 tornado 6.1 traitlets 5.1.1 typing_extensions 4.1.1 urllib3 1.22 wcwidth 0.2.5 webencodings 0.5.1 Werkzeug 2.1.1 wheel 0.37.1 widgetsnbextension 3.6.0 wincertstore 0.2 wrapt 1.12.1 zipp 3.7.0 (aipy38) C:\Users\DELL>conda deactivate C:\Users\DELL>
PyCharm 中选择Python解释器 因为我现在写的一些小程序都比较小,一般都只用VSCode和Terminal就能解决,不太常用PyCharm了。
可以看一下网上别人写的这一部分:Pycharm创建项目时,解释器如何选择_TaoWei_001的博客-CSDN博客_pycharm怎么选择解释器
conda下的Python 一直以来都是在使用原生的Python,只有在WSL上面跑深度学习和在远程服务器上面跑深度学习这两次用到过了Anaconda,之前不用Anaconda是因为我觉得这个集和太大了,很多不需要的东西,但在使用过后我才知道,conda还是挺好用的,特别是配置开发环境的时候,使用env可以创建一个环境,做到库隔离,这个真的是太有用了!
这次跟着李沐老师学习深度学习,在Windows上面配置了conda,使用的是Miniconda,体积比较小,nice!
Conda Conda是一个开源跨平台语言无关的包管理与环境管理系统。由“连续统分析”(Continuum Analytics)基于BSD许可证发布。
Conda允许用户方便地安装不同版本的二进制软件包与该计算平台需要的所有库。还允许用户在不同版本的包之间切换、从一个软件仓库下载包并安装。
Conda是用Python语言开发,但能管理其他编程语言的项目(如R语言),包括多语言项目。Conda可安装Python语言的包,类似于其他基于Python的跨平台包管理器(如wheel(页面存档备份,存于互联网档案馆)或pip)。
一些基于Conda的工具软件:
Bioconda,用于计算生物学
Anaconda
Miniconda
Anaconda Repository
Anaconda Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,就是把很多常用的不常用的库都给你装好了。
Anaconda 是Red Hat Enterprise Linux 、CentOS 、Fedora 等操作系统的安装管理程序 。它以Python 及C 语言写成,以图形的PyGTK 和文字的python-newt 接口写成。它可以用来自动安装配置,使用户能够以最小的监督运行。
Anaconda安装管理程序 应用在RHEL ,Fedora和其他一些项目,Anaconda提供纯文字模式和GUI模式,用户可以安装在各种各样的系统。
Miniconda Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。就只包含最基本的东西,其他的库得自己装。
升级全部库: conda upgrade –all 升级一个包 conda update packagename 安装包:conda install packagename 也可以安装多个包: conda installl numpy pandas scipy 安装固定版本的包:conda install numpy =1.10 移除一个包:conda remove packagename 查看所有包:conda list
创建虚拟环境:conda create -n env_name list of packagenaem eg: conda create -n env_name pandas 指定python版本:conda create -n env_name python2 = 2.7 pandas 激活环境: activate env_name 退出环境 : deactivate env_name 删除虚拟环境:conda env remove -n env_name 显示所有虚拟环境:conda env list
conda 创建的虚拟环境是在anaconda或miniconda安装目录下的envs下,所以使用pycharm,只要在特定项目配置运行环境就可以了
Miniconda安装 Miniconda — Conda documentation
Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
我安装的版本是:Miniconda3-py38_4.9.2-Windows-x86_64
安装过程比较简单,基本上是一路Next到底,最后配置一下环境就好!
参考教程:windows下安装miniconda详细教程_JessieZeng aaa的博客-CSDN博客_windows安装miniconda
参考资料 conda、miniconda、anaconda的区别以及在pycharm中选择conda的虚拟环境_bboysky45的博客-CSDN博客_miniconda
windows下安装miniconda详细教程_JessieZeng aaa的博客-CSDN博客_windows安装miniconda
Conda - 维基百科,自由的百科全书 (wikipedia.org)
Anaconda - 维基百科,自由的百科全书 (wikipedia.org)
cmd和PowerShell的区别_孤独的代码的博客-CSDN博客_powershell和cmd区别
CMD和Powershell区别 - 知乎 (zhihu.com)