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 是最稳妥的选择。
我的建议:去 python.org 下载 3.11.x 版本。安装时记得勾选「Add Python to PATH」,不然你后面在命令行敲 python 会找不到命令。

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')"

如果没报错,就说明环境搭好了。如果报错,检查一下虚拟环境是否激活,或者换个镜像源重试。

避坑指南:我曾经在 macOS 上装 pystray 时,遇到了「No module named 'gi'」的错误。这是因为 pystray 在 Linux/macOS 上依赖 GTK。解决办法是安装 PyGObject:
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。别小看这几步,它们是后面所有代码的基础。我见过太多人跳过虚拟环境,结果项目越做越乱,最后不得不重来。

下一章,咱们开始写第一个系统托盘程序——让一个图标出现在托盘里。听起来简单,但里面有不少门道。