伯克利PacMan项目Tkinter报错求助:无DISPLAY环境变量
解决PacMan运行时的Tkinter显示错误
看起来你是在WSL(Windows Subsystem for Linux)环境下运行代码的(从路径里的/mnt/c能判断出来),这个报错_tkinter.TclError: no display name and no $DISPLAY environment variable本质是WSL默认没有图形界面支持,Tkinter找不到输出的显示设备,给你几个可行的解决办法:
方法一:切换到Windows原生Python运行(最推荐)
你已经有C://Python27的Python 2.7环境,直接在PyCharm里切换解释器就行:
- 打开PyCharm的
File > Settings > Project: [你的项目名] > Python Interpreter - 点击右上角的齿轮图标,选择
Add - 选择
System Interpreter,找到C:\Python27\python.exe并确认 - 重新运行
pacman.py,Windows原生环境自带图形支持,Tkinter就能正常弹出游戏窗口了
可以先验证下这个Python的Tkinter是否正常:打开Windows命令行,输入C:\Python27\python.exe,然后执行import Tkinter; Tkinter._test(),如果弹出一个测试窗口,说明Tkinter没问题。
方法二:给WSL配置图形显示环境(如果非要用WSL)
如果想在WSL里运行,需要给WSL添加图形输出能力:
- 先在Windows上安装一个X Server工具,比如VcXsrv或者Xming,安装后启动时记得勾选
Disable access control选项 - 打开WSL终端,设置DISPLAY环境变量:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0 - 如果你用PyCharm的WSL解释器,可以在解释器配置里添加这个环境变量:
Settings > Python Interpreter > 选择WSL解释器 > Show All > 编辑 > Environment Variables,添加DISPLAY变量,值填上面命令输出的内容 - 重新运行代码,Tkinter就能把画面输出到X Server的窗口里了
方法三:用无图形文本模式运行
伯克利的PacMan代码支持纯文本模式,不需要Tkinter,运行时加上--textGraphics参数就行:
python pacman.py --textGraphics
这样游戏会在终端里以文本字符的形式显示状态,适合不需要可视化的测试场景。
内容的提问来源于stack exchange,提问作者Big Brain Algorithms




