You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 ~/.bashrc
    
    光标移到文件最末尾,把刚才的export 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
    
  • 测试安装是否成功:在终端输入
    python3 -c "import tkinter; tkinter._test()"
    
    如果弹出一个tkinter的测试窗口,就说明组件没问题了。

第四步:重新运行你的turtle脚本

现在回到你的脚本所在目录,执行python3 h.py,应该就能正常弹出turtle的绘图窗口啦!

常见小问题排查

  • 如果还是报错,先检查VcXsrv是不是在运行,并且有没有勾选「Disable access control」;
  • 要是Windows的IP变了(比如换了网络),重新执行一遍export DISPLAY=...的命令就行;
  • 如果你用的是zsh而不是默认的bash,要编辑~/.zshrc而不是.bashrc来永久设置DISPLAY变量。

内容的提问来源于stack exchange,提问作者ExhaustedCProgrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:48:15