我刚为python安装了graphics.py。然后,当我尝试运行以下代码时:
from graphics import *
def main():
win = GraphWin("My Circle", 100, 100)
c = Circle(Point(50,50), 10)
c.draw(win)
win.getMouse() # Pause to view result
win.close() # Close window when done
main()
我的翻译给了我这个奇怪的信息:
Traceback (most recent call last):
File "F:\CS 101\Python\projects\packer.py", line 8, in <module>
from graphics import *
File "F:\CS 101\Python\lib\site-packages\graphics.py", line 168, in <module>
_root = tk.Tk()
File "F:\CS 101\Python\lib\tkinter\__init__.py", line 1674, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
{F:\CS 101\Python\tcl\tcl8.5.9} {F:/CS 101/Python/tcl/tcl8.5} {F:/CS 101/Python/lib/tcl8.5} {F:/CS 101/lib/tcl8.5} F:/lib/tcl8.5 {F:/CS 101/library} F:/library F:/tcl8.5.2/library F:/tcl8.5.2/library
F:/CS 101/Python/tcl/tcl8.5/init.tcl: version conflict for package "Tcl": have 8.5.2, need exactly 8.5.9
version conflict for package "Tcl": have 8.5.2, need exactly 8.5.9
while executing
"package require -exact Tcl 8.5.9"
(file "F:/CS 101/Python/tcl/tcl8.5/init.tcl" line 20)
invoked from within
"source {F:/CS 101/Python/tcl/tcl8.5/init.tcl}"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list source $tclfile]"
This probably means that Tcl wasn't installed properly.
这是什么意思?我能做什么?
PS:我正在使用Eclipse(Pydev)进行编码。
最佳答案
关于您可以做什么,您可以尝试编辑init.tcl文件以读取类似于package require Tcl 8.5.0-8.6
的内容,或者如果这不起作用,您可以尝试package require -exact Tcl 8.5.2
。我还必须以同样的方式为tk而不是tcl编辑tcl\tk8.5\tk.tcl文件。
如果编辑文件对您不起作用,您可以从以下位置下载并安装最新的TCL:
来源:使用sourceforge的最新版本。这需要有一个可接受的编译器。例如,请参见blog.victorjabur.com/2011/06/05/compiling-python-2-7-modules-on-windows-32-and-64-using-msvc-2008-express/或stackoverflow.com/questions/4218613/building-a-python-module-on-windows-using-ms-compiler。
最新的ActiveState community version。如果您有安装权限,这可能是最简单的选项。既然这是针对CS101的,您的实验室管理员可能不允许您使用该权限(无论是通过策略还是技术)。当然,这也可能意味着这个答案来得太晚,无法满足你的即时需求。
关于这意味着什么,没有更多的信息,我现在只能猜测。我有一个相反的问题,我会告诉你,希望它能让你了解它的含义。
我安装了8.5.9,但init.tcl需要8.5.2。我猜我的问题是由于安装了activestate python,然后是官方的python(2.7,64位)和/或后来安装的其他包引起的。关于MacOS上的tcl/tk,在this download page的底部有一个注释,可以解释为在PC上也有麻烦的空间。activestate python 2.7包括tcl/tk 8.5.9,如文档here所述。使用7-zip打开activestate和python.org中的msi文件,并对“tcl”和“require”进行grepping,我可以看到activestate msi中的init.tcl指定了package require -exact Tcl 8.5.9
。
我的猜测是8.5.2需求来自于常规的python安装(显然不太好理解),或者是我稍后安装的一些包。在修复模式下运行activestate msi既不能解决问题,也不能在修复模式下运行python msi。
另外,如果这不及时,我为什么还要回答?为你想出一个像样的答案帮助我更好地理解我的问题。
关于python - Python tcl安装不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10576913/