我刚为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)进行编码。
答案 0 :(得分:5)
关于您可以执行的操作,您可以尝试编辑init.tcl文件以阅读package require Tcl 8.5.0-8.6
之类的内容,或者如果这不起作用,您可以尝试package require -exact Tcl 8.5.2
。我还必须以相同的方式编辑我的tcl \ tk8.5 \ tk.tcl文件,对于Tk而不是Tcl。
如果编辑文件不适合您,您可以从以下位置下载并安装最新的Tcl:
关于它意味着什么,没有更多信息,我现在只能做出猜想。我有相反的问题;我会告诉你它,希望能让你深入了解它可能意味着什么。
我安装了8.5.9,但init.tcl需要8.5.2。我猜我的问题是由安装ActiveState python,然后是官方python(2.7,64位)和/或我后来安装的其他软件包引起的。 this download page底部有一条关于MacOS上Tcl / Tk的说明,可以解释为PC上也有麻烦的余地。 ActiveState Python 2.7包含Tcl / Tk 8.5.9,如文档here所述。使用7-zip从ActiveState和Python.org打开msi文件,然后点击“tcl”然后“require”,我可以看到ActiveState msi中的init.tcl指定package require -exact Tcl 8.5.9
。
我的猜测是8.5.2的要求来自常规的python安装(显然不那么容易),或者我后来安装的一些软件包。在修复模式下运行ActiveState msi不能解决问题,也无法在修复模式下运行Python msi。
P.S如果这不合适,我为什么还要回答?为你制定一个体面的答案有助于我更好地理解我的问题。答案 1 :(得分:5)
我通过修改激活脚本解决了问题:
set "TCL_LIBRARY=D:\Program Files (x86)\Python3.5\tcl\tcl8.6"
set "TK_LIBRARY=D:\Program Files (x86)\Python3.5\tcl\tcl8.6"
答案 2 :(得分:1)
我在ubuntu 11.04上最后一次安装ns2.35时遇到了同样的问题。 安装ns2.35后,得到ns成功安装的消息。然后我在/.bashrc中设置路径。然后我给了ns命令,它给了我同样的错误。
问题是因为,ns可执行文件也在/ usr,这是冲突的。
解决方案:
答案 3 :(得分:1)
使用TCL_Library环境变量的另一个程序可能存在兼容性问题。在附加的线程中,我更改了环境变量路径,并修复了我的问题。它可能与您的问题有关:
答案 4 :(得分:1)
我正在使用Python 2.7运行PyCharm IDE。 在c:\ Python27 \ tcl \ tcl8.5 \ init.tcl“包中需要-exact Tcl 8.5。 2 ”更改为
package require -exact Tcl 8.5.9
在c:\ Python27 \ tcl \ tk8.5 \ tk.tcl“package require -exact Tk 8.5。 2 ”更改为:
package require -exact Tcl 8.5.9
这对我有用。
答案 5 :(得分:0)
PATH解决方案对我不起作用。我正在使用Win7 python 2.7。
最后我编辑了2个文件:
C:\ Python27 \ TCL \ tk8.5 \ tk.tcl
package require -exact Tk 8.5.2
变成
package require Tk 8.5.0-8.6
C:\ Python27 \ TCL \ TCL8.5 \ init.tcl中
package require -exact Tcl 8.5.2
变成
package require Tcl 8.5.0-8.6
这有效!以前我的IDLE永远不会弹出,但现在它也能正常工作。很酷,谢谢@Jonathan Spooner和@hlongmore
答案 6 :(得分:0)
我认为我在windows8 / python2.7下遇到了同样的问题。这是一个安装和环境变量设置的地狱。所有这些都毫无价值。今天我找到了解决方案:
在D:下载并安装python(为了保留我的安装),然后将文件夹Tcl复制到我的C:安装中,位于相同的相对位置:C:\ Python27
答案 7 :(得分:0)
在Windows 10中使用mayplotlib.pyplot生成简单的散点图时遇到了类似的问题。我通过在“控制面板&gt;系统和安全性&gt;系统&gt;高级系统设置&gt;环境变量&gt;用户变量中添加新环境变量来解决为\“:
变量名称:TCL_LIBRARY,变量值= C:\ Python27 \ tcl \ tcl8.5 变量名称:TK_LIBRARY,变量值= C:\ Python27 \ tcl \ tk8.5
答案 8 :(得分:0)
要提供更通用的解决方案,在错误回溯中,您应具有以下内容:
C:/用户/ [perso路径] /tcl/tcl8.6/init.tcl:“ Tcl”软件包的版本冲突:具有8.6.6,恰好需要8.6.8 软件包“ Tcl”的版本冲突:拥有8.6.6,恰好需要8.6.8
因此,只需打开错误中描述的文件:C:/Users/[perso path]/tcl/tcl8.6/init.tcl
,并将package require -exact Tcl 8.6.8
替换为错误中所需的版本,对我而言,它是8.6.6:package require -exact Tcl 8.6.6
。
然后,Tk
(使用另一个文件)将发生相同的问题,我执行了相同的操作,并且它起作用了。也许您将没有相同的版本,只需替换它们即可。