一、前言
随着学的越来越深,发现以前有很多东西配置啊安装啊是不够清晰的、写Python作业经常会出现版本不兼容的问题,只会照着网上的经验贴复制粘贴代码,而不懂得背后的逻辑,所以产生这篇经验贴,想着一次性搞好环境版本不兼容的问题。
我的电脑没有独显,所以用的都是cpu可兼容的版本,使用的系统是Windows 11。
首先需要提前做的事情是:
- 下载Python解释器
- 下载并配置Pycharm
- 下载并配置Anaconda
二、Python开发环境
我用的是Pycharm专业版,网上有很多破解版教程可以自行搜索。
一开始我用的是vscode,后面发现不方便。为什么呢?因为大一的时候学c语言,编写c语言是在vscode里面的,后面写python也想在vscode里面,结果一通操作之后,vscode的环境由c语言变成了python搞得c语言又要重新配环境,就很麻烦。(相信你们应该知道vscode配c语言环境有多麻烦。。。)后面导致重新vscode配c语言环境也是老是用不了,反反复复配。所以Python还是乖乖在Pycharm里面跑吧。
这里建议用专业版,不然以后深入学习的话有些功能用不了。
三、用什么下?介绍一下pip和conda
pip和conda都是可以用来管理包的。所谓包,简而言之就是实现功能的工具吧,就犹如画图要用笔,计算要用计算器。我们使用的python基本库有些功能是无法实现的,或者有更好的实现方式,这些实现的方式可以放在包里面,我们把包下载下来后就可以调用包里面的功能。
我以前pip和conda都是在Anaconda Prompt里面混着用的,因为网上搜索下载包的教程有时候用pip的指令来下有时候用conda的指令来下,我只会复制粘贴代码。但其实它们是有不同之处,结合网上的一些经验贴总结如下[1][2]:
- pip只能下载python的包,conda除了下载python的包还可以下载别的包。
- pip可以在任何环境下载包,conda只能在conda环境下下载包。
- pip 和 conda 的python安装包路径在虚拟环境下都是 xxxx\Anaconda3\envs\a_conda_env\Lib\site-packages,conda 安装非python包路径是 xxxxx\Anaconda3\pkgs。
- conda 会覆盖pip安装的包,pip 不会覆盖conda的包。
四、从哪里下?介绍一下镜像源
镜像源其实就是包下载的地方啦,在镜像源里面下载会比在国外网站下载快。
常用的镜像源[3]:
阿里云:http://mirrors.aliyun.com/pypi/simple
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple
中国科学院:http://pypi.mirrors.opencas.cn/simple
1、查看镜像源
可以在Anaconda Prompt中输入conda --show channels
查看镜像源的路径。可以看出,我这里用的是清华的镜像源,有一个问题是我挂着tizi的时候不能下载包,会出现网络错误,不知道是不是镜像源的问题,总之下载的时候别挂着tizi就行了。
2、更换镜像源
可以参考这一篇博客,写的挺详细的:yutu7:Anaconda更换镜像源的相关配置。我没换过镜像源,下次有空试试(踩踩坑)。
五、怎么下?Anaconda配置虚拟环境[4]
1、查看Python版本
打开Anaconda Prompt,输入python --version
,可以看出我这里下载的base(本地的)的python版本是3.9.12。
有时候我们需要用不同的python版本,例如3.8的,但是又不方便修改本地base的python版本,怎么办呢?所以就需要创建虚拟环境,在虚拟环境中配置你想要的python版本。一般来说,一个环境中的python版本随意更改之后,该环境的其他包会很容易出现不兼容问题。
2、创建虚拟环境
如果之前已经创建了虚拟环境可以不用创建,直接把包装进虚拟环境即可。可以跳转下面的第3条。
接着在Anaconda Prompt中,输入conda create -n 虚拟环境的名字 python=3.9
,例如:我这里创建的虚拟环境的名字是EnvPython3.9,这个名字可以随便取。python版本设置为3.9。
会冒出来一大串东西:
意思就是我原本的conda环境(23.7.4)太老了,它WARNING让我升级conda(23.10.0)。
创建的虚拟环境的地址是在D:\Anaconda\envs\EnvPython3.9当中。
The following NEW packages will be INSTALLED的意思是从下列地址当中把包装进这个新的虚拟环境中。
Proceed ([y]/n)?意思是要继续下载吗?我们选择y,确定下载。
3、查看创建的虚拟环境
接着在Anaconda Prompt中,输入conda info --envs
。可以看出,刚刚创建的虚拟环境EnvPython3.9出现在列表中,说明确实创建成功。星号*所指的就是目前所在的环境base,第一行中(base)也说明现在的环境是本地环境。
我们还可以删除多余的虚拟环境,输入conda remove --n 虚拟环境名字 --all
,例如:删除EnvPython9这个虚拟环境。Proceed ([y]/n)?我们选择y,确定删除。
4、激活虚拟环境
输入activate (虚拟环境名字)
即可激活该虚拟环境,接着我们可以输入conda list
查看这个虚拟环境中配置的包。从图中我们可以看出,第三行括号里面的环境已经切换为我们想配置的虚拟环境当中了,而且之前创建虚拟环境的同时,会把最新版的pip也装进去。对比于base中的包,这个虚拟环境中的包的数量显然少很多,所以下一步我们还需要在该虚拟环境中搭载我们需要的包。
我们也可以输入conda deactivate
退出当前的虚拟环境回到base环境中
5、常用的命令
操作 | pip命令 | conda命令 |
---|---|---|
下载包 | pip install 包名 或pip install -n 指定环境名 包名 或pip 包名==指定版本 | conda install 包名 或 conda install -n 指定环境名 包名 或conda 包名==指定版本 |
删除包 | pip uninstall 包名 | conda uninstall 包名 |
查看该环境安装的包 | pip list | conda list |
接着我们可以利用以上命令来管理包,一般来说是通用的,但会有少许不同。查阅资料发现,程序猿的探索之路的这篇博文提到:
-
conda会检查版本的依赖性,pip不会。这也就导致pip下的包可能会因为不兼容而用不了。
-
如果同时用conda和pip下了同一个但不同版本的包,可能会出现冲突,需要手动删除其中一个。
这几个是可以兼容的 python 3.9.18 matplotlib 3.8.0 numpy 1.26.2 tensorflow-cpu 2.15.0
下载numpy(建议先下载numpy):pip install numpy==1.26.2
下载matplotlib:pip install matplotlib==3.8.0
下载tensorflow-cpu:pip install tensorflow-cpu==2.15.0
六、Pycharm中切换虚拟环境
打开pycharm
然后点确定-确定就切换成功了。
如果看不懂,这里有个油管的视频版教学:油管创建虚拟环境后在pycharm中更换虚拟环境