环境搭建:工欲善其事,必先利其器

说实话,每次带新人入门路径规划,我最怕听到的一句话就是:「老师,我代码跑不起来。」

十有八九,问题都出在环境配置上。不是 Python 版本不对,就是某个库没装好。所以这一章,咱们先把「地基」打牢。我带你一步步把 Python 环境、NumPy、Matplotlib 这些家伙伺候好。

Python 版本选择:别用太新的,也别用太旧的

我个人习惯用 Python 3.8 到 3.10 之间的版本。为什么?因为很多科学计算库对最新版 Python 的支持会慢半拍。我在项目中遇到过,Python 3.11 刚出时,某个关键库死活装不上,折腾了两天。

你想想看,咱们是来学路径规划的,不是来给 Python 当小白鼠的。所以稳妥点,用 3.9 或 3.10 就好。

我的建议:去 python.org 下载安装包时,记得勾选「Add Python to PATH」。这个选项不勾,后面命令行里敲 python 会提示找不到命令。我刚开始学的时候就被这个坑过。

虚拟环境:每个项目一个「小房间」

嗯,这里要注意。千万别把所有库都装到全局环境里。不同项目依赖的库版本可能打架。比如项目 A 要 NumPy 1.21,项目 B 要 NumPy 1.24,装在一起就乱套了。

我推荐用 venv 或者 conda 创建虚拟环境。下面是我常用的方式:

# 创建虚拟环境(在项目目录下执行)
python -m venv path_planning_env

# 激活环境(Windows)
path_planning_env\Scripts\activate

# 激活环境(Mac/Linux)
source path_planning_env/bin/activate

激活后,命令行前面会出现 (path_planning_env) 字样。这时候你安装的所有库,都只在这个环境里生效。干净又卫生。

NumPy 安装:矩阵运算的基石

说白了,路径规划里大量操作都是矩阵和数组运算。地图是二维数组,路径点是坐标数组,距离计算是向量运算。没有 NumPy,这些操作得自己写循环,效率低到哭。

pip install numpy

就这么一行。但我曾经遇到过安装失败的情况,原因是网络超时。这时候可以换国内镜像源:

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

装好后,在 Python 里敲 import numpy as np,不报错就说明成了。你可以试试:

import numpy as np
arr = np.array([[1, 2], [3, 4]])
print(arr.shape)  # 输出 (2, 2)

Matplotlib 安装:把路径画出来

算法跑完了,光看数字多没意思。你得把地图、障碍物、路径点都画出来,一眼就能看出算法对不对。Matplotlib 就是干这个的。

pip install matplotlib

同样,如果慢就加镜像源。装好后,咱们画个简单的散点图测试一下:

import matplotlib.pyplot as plt
import numpy as np

# 生成一些随机点
points = np.random.rand(10, 2)
plt.scatter(points[:, 0], points[:, 1])
plt.title("测试:随机点")
plt.show()

如果弹出一个窗口,里面有几个彩色点,那就恭喜你,环境搭好了。

我曾经踩过的坑:在 Mac 上装 Matplotlib 后,运行代码报错说「backend 有问题」。解决方案是安装 pip install pyqt5 或者设置后端为 TkAgg。在代码开头加一行:import matplotlib; matplotlib.use('TkAgg') 就能解决。

开发工具推荐:选个顺手的「武器」

工具这东西,没有最好的,只有最顺手的。我列几个常用的,你挑一个用就行。

工具 适合人群 优点 缺点
VS Code 大多数开发者 轻量、插件丰富、免费 需要自己配置
PyCharm 专业 Python 开发者 开箱即用、调试强大 社区版功能有限
Jupyter Notebook 数据探索、教学演示 交互式、可视化方便 不适合大型项目

我个人习惯用 VS Code,配上 Python 插件和 Jupyter 插件,既能写脚本,又能跑 Notebook。你想想看,调试 A* 算法时,每一步的 open list 和 close list 都想看看,用 Jupyter 的单元格一步步跑,简直不要太爽。

小技巧:在 VS Code 里按 Ctrl+Shift+P,输入「Python: Select Interpreter」,选择你刚才创建的虚拟环境。这样代码就能用上刚装的 NumPy 和 Matplotlib 了。

验证环境:跑一个完整的测试

最后,咱们写个完整的测试脚本,确保所有东西都正常。把下面的代码保存为 test_env.py

import numpy as np
import matplotlib.pyplot as plt

# 创建一个 10x10 的网格地图
grid = np.zeros((10, 10))
grid[3:6, 3:6] = 1  # 中间放个障碍物

# 起点和终点
start = (1, 1)
goal = (8, 8)

# 画出来
plt.figure(figsize=(6, 6))
plt.imshow(grid, cmap='gray_r', origin='lower')
plt.scatter(start[1], start[0], color='green', s=100, label='起点')
plt.scatter(goal[1], goal[0], color='red', s=100, label='终点')
plt.legend()
plt.title('环境测试:地图与起终点')
plt.show()

print("环境搭建成功!")
print(f"NumPy 版本: {np.__version__}")

运行后,你应该看到一个灰色网格,中间有个白色方块(障碍物),左下角有个绿点(起点),右上角有个红点(终点)。

看到这个画面,就说明你的 Python、NumPy、Matplotlib 全部就位。咱们可以正式开始写 A* 和 Dijkstra 算法了。

总结一下:环境搭建其实就三步——装 Python、建虚拟环境、装 NumPy 和 Matplotlib。别嫌麻烦,这一步做好了,后面 28 章你会省下大量排错的时间。我曾经因为环境问题浪费过整整一天,后来学乖了,每次新项目都先花 10 分钟搭环境。磨刀不误砍柴工,真的。