2、开发环境准备:Python版本选择、虚拟环境搭建、必备库安装(pystray、PIL)
好,咱们正式开始动手了。写代码之前,先把「厨房」收拾利索。我见过太多同学,代码逻辑没问题,结果卡在环境配置上,一卡就是半天。说白了,环境搭好了,后面的事就顺了。
2.1 Python版本怎么选?
我个人习惯用 Python 3.10 或 3.11。为什么?
- pystray 这个库,在 Python 3.8 以下会有兼容问题。我踩过坑,当时用 3.6 死活装不上,后来才发现是版本太老。
- PIL(Pillow) 倒是比较宽容,3.7 以上基本都能跑。但你想想看,既然要学新东西,干嘛不用新一点的版本?
- Python 3.12 刚出的时候,有些第三方库还没跟上。所以 3.10 或 3.11 是最稳妥的选择。
2.2 虚拟环境——这个真不能省
你可能会想:「我就写个小工具,搞什么虚拟环境?」嗯,我以前也这么想。直到有一次,我同时维护三个项目,一个要 Flask 2.0,一个要 Flask 1.1,还有一个死活只能用 1.0。那叫一个酸爽。
虚拟环境说白了,就是给每个项目一个独立的「小房间」。你在房间里装什么库,都不会影响到外面。
创建虚拟环境(两种方式)
方式一:用 venv(Python 自带,推荐)
# 打开终端,进入你的项目文件夹
cd your_project_folder
# 创建虚拟环境,名字叫 venv 就行
python -m venv venv
# 激活虚拟环境
# Windows 下:
venv\Scripts\activate
# macOS / Linux 下:
source venv/bin/activate
激活成功后,命令行前面会出现 (venv) 字样。看到这个,就说明你已经在「小房间」里了。
方式二:用 conda(如果你装了 Anaconda)
conda create -n tray_env python=3.11
conda activate tray_env
我个人更推荐 venv,轻量、干净。conda 有时候会带一堆用不上的包。
2.3 必备库安装:pystray 和 PIL
好,虚拟环境激活了,现在装东西。
安装 pystray
pystray 是咱们的核心库。它负责在系统托盘里创建图标、响应点击事件。
pip install pystray
就这么一行。如果遇到网络慢,可以加个国内镜像:
pip install pystray -i https://pypi.tuna.tsinghua.edu.cn/simple
安装 Pillow(PIL 的现代版本)
PIL 是 Python Imaging Library 的缩写。老版本已经没人维护了,现在都用 Pillow。它负责处理图标图片。
pip install Pillow
装完之后,你在代码里导入的时候,还是写 from PIL import Image。别写成 from Pillow import ...,那样会报错。嗯,这里要注意。
验证安装
装完了,咱们验证一下。在终端里敲:
python -c "import pystray; print(pystray.__version__)"
python -c "from PIL import Image; print('PIL OK')"
如果没报错,就说明环境搭好了。如果报错,检查一下虚拟环境是否激活,或者换个镜像源重试。
pip install pygobject如果你用的是 Windows,一般不会遇到这个问题。
2.4 完整的环境检查脚本
我习惯写一个简单的脚本,一键检查环境是否就绪。你也试试:
# check_env.py
import sys
import pystray
from PIL import Image
print(f"Python 版本: {sys.version}")
print(f"pystray 版本: {pystray.__version__}")
print("Pillow 已就绪")
# 创建一个简单的测试图标
try:
# 生成一个 16x16 的红色方块作为测试图标
img = Image.new('RGB', (16, 16), color='red')
print("图标生成测试通过")
except Exception as e:
print(f"图标生成失败: {e}")
运行它:
python check_env.py
如果看到三行都输出正常,恭喜你,环境准备完毕。咱们可以进入下一章了。
2.5 小结
这一章咱们干了三件事:选了 Python 3.11,建了虚拟环境,装了 pystray 和 Pillow。别小看这几步,它们是后面所有代码的基础。我见过太多人跳过虚拟环境,结果项目越做越乱,最后不得不重来。
下一章,咱们开始写第一个系统托盘程序——让一个图标出现在托盘里。听起来简单,但里面有不少门道。