我在 macOS 上使用 Python 获得“无 $DISPLAY 环境变量”。那是 MacPorts python 3.7,而不是本机 python。我想在虚拟环境中使用 MacPorts python,这样我就可以保持我的项目干净。我还必须使用 MacPorts 而不是 Homebrew。我尝试将 $DISPLAY 值设置为 :0.0 失败,但以下链接无济于事,因为我没有使用 matplotlib,而且我在一台带有tkinter、python 和 seaborn 的显示问题的机器上运行:_tkinter.TclError : 没有显示名称,也没有 $DISPLAY 环境变量我从这里 [ https://www.python.org/download/mac/tcltk/#built-in-8-6-8]了解到,不再推荐使用 X11,而是使用 Aqua Cocoa Tk。问题:正确设置此环境变量的诀窍是什么?我的堆栈是:macOS 莫哈韦安装了以下相关端口的 Macports:py37-tkinter @3.7.4 python/py-tkinterpy37-virtualenv @16.7.2 python/py-virtualenvpython37 @3.7.4 lang/python37tcl @8.6.9 语言/tcl传统知识@8.6.9 x11/tkvirtualenv_select @0.1 python/virtualenv_select当我跑步时import tkinter as tktk._test()我明白了_tkinter.TclError: no display name and no $DISPLAY environment variable
2 回答
慕村225694
TA贡献1880条经验 获得超4个赞
相当新的 macOS 版本默认没有 Xserver,因此您还需要安装一个。据我所知(即我正在使用它),XQuartz工作得足够了。
另一种选择是使用使用 Aqua 后端而不是 X11 后端的 Tk 构建。
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
我有同样的问题,直到电线。无法tkinter
使用任何类型的图形界面正常运行,希望在我的 Python 文件中使用 MacPorts 时保持一致,并且我目前没有使用matplotlib
任何东西。
运行 macOS 10.15.5,我发现问题似乎是我的tk
端口和我的xorg-server
端口没有礼貌地相互通信。我已将前者安装为依赖项;结果,以前的安装默认为x11
变体(就像 OP 的端口一样)。
我不确定如何使 Aqua Cocoa 版本工作,但重新安装tk
和指定quartz
变体为我解决了这个问题:
sudo port install tk +quartz
如果这对您有用,您对 to 的调用tk._test()
应该停止返回您给定的TclError
.
希望。
添加回答
举报
0/150
提交
取消