Python编程环境

之前在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的环境。

image-20220731141445938

在配置环境变量时,可以选择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
# conda environments:
#
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、科学计算工具等等,就是把很多常用的不常用的库都给你装好了。

AnacondaRed Hat Enterprise LinuxCentOSFedora等操作系统的安装管理程序。它以PythonC语言写成,以图形的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

  • 管理python环境:

创建虚拟环境: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)


Python编程环境
https://cosmicdusty.cc/post/Knowledge/PythonDevelopmentEnvironment/
作者
Murphy
发布于
2022年7月31日
许可协议