python与Tkinter版本冲突

周末在家闲着无聊,就想着写点好玩的代码。在尝试Python的GUI编程的时候,就出现了问题。
学习了基本语法后,就开始了自己的GUI之旅。运行第一段代码之后发现它长这样

哎……好像有点不对,我那行字呢?而且怎么这么黑,我看人家的效果不是这样啊……
看终端输出,有一行警告:

DEPRECATION WARNING: The system version of Tk is deprecated and may be removed in a future release. Please don’t rely on it. Set TK_SILENCE_DEPRECATION=1 to suppress this warning.

发现是版本问题,发现问题就好解决了。于是在网上疯狂的搜资料,终于找到了方法。
在某位博主的文章中了解到了Conda这个玩意儿

Conda is an open-source package management system and environment management system that runs on Windows, macOS, and Linux. Conda quickly installs, runs, and updates packages and their dependencies. Conda easily creates, saves, loads, and switches between environments on your local computer. It was created for Python programs but it can package and distribute software for any language.

简单说,conda是一个开源的包管理系统及环境管理系统,支持跨平台,可管理多个版本的软件包及它们的依赖关系,可方便地在不同版本之间灵活切换,并且conda支持包括python在内的任何语言。

以前都是用venv来管理多个虚拟环境,但是venv只能管理不同的包版本,python还是同一个;conda则是从python到软件包都可以完全隔离,就像一个小型的虚拟机。简直是强迫症患者的福音!

要使用conda,最方便的选择是安装Anaconda,它是一个开源的python发行版,包括了python、conda以及NumPy、SciPy等多达250+个软件包,功能非常全面。但是功能全面就意味着体积庞大,Anaconda安装包要591M,安装之后的空间占用接近3个G,做为日常python研究学习的话实在没有必要。此时我们可以转向conda的另外一个选择,即Miniconda,它是Anaconda的轻量化版本( It is a small, bootstrap version of Anaconda ),只包含了python和conda,以及一些基本的程序包比如pip等。Miniconda的安装包只有不到60M,安装后在我的Mac上大约占用490M空间。

安装和使用Miniconda的过程十分简单,首先从官网下载与操作系统对应的安装包,下载完成后在终端执行:

1
bash Miniconda3-latest-MacOSX-x86_64.sh

安装到后面还会有一个初始化的过程,一路按照默认配置执行完毕即可,中间需要选择yes/no的地方输入yes。安装完成后记得重启终端窗口,否则环境变量可能不生效导致conda命令执行不成功。安装完成后在终端执行命令:conda -V,出现版本号就说明安装成功了。接下来就可以使用conda来管理python版本了,比如想要创建一个独立的python环境,博主这里python版本为3.9.6,使用如下命令:
1
conda create -n python3 python=3.9.6

其中这里python3为你指定的环境名称,名称根据自己的喜好来取。
环境创建好之后,与venv类似,可以使用
1
conda activate python3


1
conda deactivate

来进入和退出环境。
如果进入conda环境,终端是会有表示的,如下图:

会发现我们的终端前面会多一个环境名。

到这里Tkinter版本的问题就已经解决,我们重新运行下程序,出现预期效果