WSL Ubuntu环境下Python Turtle库报错:缺少DISPLAY环境变量与显示名称
解决WSL Ubuntu环境中Python Turtle的
_tkinter.TclError: no display name and no $DISPLAY environment variable错误 别担心,这个问题在WSL环境里特别常见——因为WSL本身默认不带图形界面,而turtle库依赖tkinter的GUI功能,所以得把图形输出定向到Windows的图形客户端才行。下面是针对你的Python 3.9 + WSL Ubuntu环境的超详细分步解决方案,跟着做肯定能搞定:
第一步:安装Windows端的X Server(VcXsrv)
WSL没有自己的图形显示能力,得借助Windows上的X Server来显示GUI窗口,推荐用免费又好用的VcXsrv:
- 打开Windows自带的Microsoft Store,搜索「VcXsrv Windows X Server」,点击安装就行(如果Store搜不到,也可以去官网下载,但Store对新手更友好)。
- 安装完成后启动VcXsrv,跟着配置向导走:
- 第一个界面选「Multiple windows」,点Next;
- 第二个界面选「Start no client」,点Next;
- 关键一步:一定要勾选「Disable access control」,其他选项保持默认,点Finish;
- 启动后右下角托盘会出现VcXsrv的图标,别关掉它,让它在后台运行。
第二步:给WSL配置DISPLAY环境变量
现在要告诉WSL把图形输出送到刚才装的X Server上:
- 打开WSL Ubuntu终端,先临时设置DISPLAY变量,输入这条命令:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0 - 验证一下是否设置成功:输入
echo $DISPLAY,如果输出类似192.168.x.x:0.0的内容,就说明没问题。 - 要是想让这个设置永久生效(每次打开终端自动加载),就编辑bash配置文件:
光标移到文件最末尾,把刚才的nano ~/.bashrcexport DISPLAY=...命令粘贴进去,然后按Ctrl+O保存,按Ctrl+X退出编辑器。
最后执行source ~/.bashrc让新配置立即生效。
第三步:确认Ubuntu端的tkinter组件安装正确
虽然你说已经装了tkinter,但WSL里的Python 3.9可能需要对应系统级的tk包,再确认一遍:
- 先更新软件源:
sudo apt update - 安装Python 3对应的tkinter组件:
sudo apt install python3-tk - 测试安装是否成功:在终端输入
如果弹出一个tkinter的测试窗口,就说明组件没问题了。python3 -c "import tkinter; tkinter._test()"
第四步:重新运行你的turtle脚本
现在回到你的脚本所在目录,执行python3 h.py,应该就能正常弹出turtle的绘图窗口啦!
常见小问题排查
- 如果还是报错,先检查VcXsrv是不是在运行,并且有没有勾选「Disable access control」;
- 要是Windows的IP变了(比如换了网络),重新执行一遍
export DISPLAY=...的命令就行; - 如果你用的是zsh而不是默认的bash,要编辑
~/.zshrc而不是.bashrc来永久设置DISPLAY变量。
内容的提问来源于stack exchange,提问作者ExhaustedCProgrammer
相关产品推荐
相关产品推荐

