我刚刚启动了Kali live USB并希望通过处理我在Windows机器上编写的一些代码来熟悉系统。长话短说我无法获得一些非常基本的tkinter代码,所以我超级基本。事实证明,如果我是root或sudo,我只能让它运行。见下文。
ben@kali:/usr/lib/python3.2$ python
Python 3.2.3 (default, Feb 20 2013, 14:44:27)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
>>> t = Tk()
No protocol specified
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "tkinter/__init__.py", line 1701, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldnt connect to display ":0.0"
>>>
ben@kali:/usr/lib/python3.2$ sudo python
Python 3.2.3 (default, Feb 20 2013, 14:44:27)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
>>> t = Tk()
>>>
正如你所看到的那样,当我没有以root身份运行python时,我得到了错误,通过使用sudo for python突然tkinter工作(显然你无法看到窗口,但它有效)。我对linux很陌生,真的不知道从哪里开始。我确实在tkinter文件夹上尝试chmod 777,但似乎没有效果。任何想法都会非常有帮助。谢谢
答案 0 :(得分:0)
这完全取决于您的DISPLAY
环境变量的设置。这表示代表与显示服务器连接的套接字;对于:0.0
,这是一个Unix域套接字(通常为/tmp/.X11-unix/X0
,但不一定;它取决于您的Xserver和Xlib之间的协议)。如果您无权访问该目录中的该套接字,则无法使用该显示。
可能还存在与XAUTHORITY
环境变量中指定的文件相关的一些问题,具体取决于连接的确切安全和身份验证方式。这里有很多可能的复杂性,但总结是如果对X服务器进行身份验证所需的安全密钥存储在X客户端库无法读取(或无法找到)的文件中,则连接将失败。这与首先是否可以访问套接字(我的前一段)无关。