14

我刚刚为 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]"

这可能意味着 Tcl 没有正确安装。

这是什么意思?我能做些什么?

PS:我正在使用 Eclipse (PyDev) 进行编码。

4

9 回答 9

10

我通过修改我的激活脚本来解决问题:

set "TCL_LIBRARY=D:\Program Files (x86)\Python3.5\tcl\tcl8.6"
set "TK_LIBRARY=D:\Program Files (x86)\Python3.5\tcl\tcl8.6"
于 2016-10-28T08:15:30.440 回答
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:

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

关于它的含义,没有更多信息,我现在只能做出推测。我遇到了相反的问题;我会告诉你它,希望它能让你对它的含义有所了解。

我安装了 8.5.9,但 init.tcl 需要 8.5.2。我猜我的问题是由安装 ActiveState python、官方 python(2.7、64 位)和/或我后来安装的其他软件包引起的。此下载页面底部有一条 关于 MacOS 上的 Tcl/Tk 的注释,可以解释为 PC 上也存在问题空间。ActiveState Python 2.7 包括 Tcl/Tk 8.5.9,如此所述。使用7-zip从 ActiveState 和 Python.org 打开 msi 文件,然后 grepping 搜索“tcl”然后“require”,我可以看到 ActiveState msi 中的 init.tcl 指定package require -exact Tcl 8.5.9.

我的猜测是 8.5.2 的要求来自常规的 python 安装(这显然不太好用),或者我后来安装的一些包。在修复模式下运行 ActiveState msi 不能解决问题,在修复模式下运行 Python msi 也不能解决问题。

PS如果这不及时,为什么我仍然回答?为您制定一个体面的答案有助于我更好地理解我的问题。

于 2012-06-08T20:06:54.910 回答
1

我上次在 ubuntu 11.04 中安装 ns2.35 时遇到了同样的问题。安装ns2.35后,收到ns安装成功的消息。然后我在/.bashrc 中设置路径。然后我给了 ns 命令,它给了我同样的错误。

问题是因为 ns 可执行文件也在 /usr 中,这是冲突的。

解决方案:

  1. 通过在终端 cd /usr/local/bin 中给出以下命令,转到位置 root-usr-local-bin
  2. 在那里你会找到 ns 文件。我们只需要通过给出以下命令来删除它 rm ns
  3. 就是这样,你完成了。现在您的 ns 开始成功运行。
于 2012-12-07T06:55:53.243 回答
1

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

Python IDLE 无法启动

于 2012-12-21T12:33:11.017 回答
1

我正在使用 Python 2.7 运行 PyCharm IDE。里面 c:\Python27\tcl\tcl8.5\init.tcl "package require -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

这对我有用。

于 2013-12-04T20:19:56.873 回答
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

于 2013-08-30T06:32:03.980 回答
0

我想我在 windows8/python2.7 下遇到了同样的问题。这是安装和环境变量设置的地狱。都一文不值。今天我找到了一个解决方案:

在 D: 下载并安装 python (为了保留我的安装) 然后将文件夹 Tcl 复制到我的 C: 安装中相同的相对位置:C:\Python27

于 2015-08-11T19:43:07.177 回答
0

在 Windows 10 中使用 mayplotlib.pyplot 生成简单散点图时,我遇到了类似的问题。我通过在

控制面板>系统和安全>系统>高级系统设置>环境变量>用户名的用户变量:

变量名:TCL_LIBRARY,变量值=C:\Python27\tcl\tcl8.5

变量名:TK_LIBRARY,变量值=C:\Python27\tcl\tk8.5

于 2017-01-03T17:33:49.907 回答
0

为了提供更通用的解决方案,在错误回溯中,您应该具有以下内容:

C:/Users/[perso path]/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,我做了同样的操作并且它有效。也许你不会有相同的版本,只需更换它们。

于 2018-12-08T01:09:18.700 回答