Python tcl安装不正确

时间:2012-05-14 02:30:52

标签: python graphics

我刚为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)进行编码。

9 个答案:

答案 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:

  • 来源使用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。如果您有权安装,这可能是最简单的选择。看到这是针对CS 101的,您的实验室管理员可能不会允许您获得该许可(无论是通过策略还是技术)。当然,这也可能意味着这个答案来得太晚,无法满足您的迫切需求。

关于它意味着什么,没有更多信息,我现在只能做出猜想。我有相反的问题;我会告诉你它,希望能让你深入了解它可能意味着什么。

我安装了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,这是冲突的。

解决方案:

  1. 通过在终端中输入以下命令,转到位置root-usr-local-bin cd / usr / local / bin
  2. 你会找到ns文件。我们只需要通过给出以下命令来删除它 rm ns
  3. 多数民众赞成,你已经完成了。现在你的ns开始成功运行。

答案 3 :(得分:1)

使用TCL_Library环境变量的另一个程序可能存在兼容性问题。在附加的线程中,我更改了环境变量路径,并修复了我的问题。它可能与您的问题有关:

Python IDLE won´t start

答案 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(使用另一个文件)将发生相同的问题,我执行了相同的操作,并且它起作用了。也许您将没有相同的版本,只需替换它们即可。