我刚为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
。我还必须以相同的方式编辑我的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社区版。如果您有权安装,这可能是最简单的选择。看到这是针对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拉链 从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。
如果这不合适,为什么我仍然回答?为您制作一个体面的答案有助于我更好地理解我的问题。
我通过修改激活脚本解决了问题:
set "TCL_LIBRARY=D:\Program Files (x86)\Python3.5\tcl\tcl8.6"
set "TK_LIBRARY=D:\Program Files (x86)\Python3.5\tcl\tcl8.6"
我在ubuntu 11.04上最后一次安装ns2.35时遇到了同样的问题。
安装ns2.35后,得到ns成功安装的消息。然后我在/.bashrc中设置路径。然后我给了ns命令,它给了我同样的错误。
问题是因为,ns可执行文件也在/ usr,这是冲突的。
解:
- 通过在终端中输入以下命令转到位置root-usr-local-bin
cd / usr / local / bin
- 在那里你会找到ns文件。我们只需要通过给出以下命令来删除它
rm ns
- 多数民众赞成,你完成了。现在你的ns开始成功运行了。
使用TCL_Library环境变量的另一个程序可能存在兼容性问题。在附加的线程中,我更改了环境变量路径并修复了我的问题。它可能与您的问题有关:
Python IDLE不会启动
我正在使用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“包中需要-exact Tk 8.5。2“ 改成:
package require -exact Tcl 8.5.9
这对我有用。
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
我想我在windows8 / python2.7下遇到了同样的问题。这是一个安装和环境变量设置的地狱。所有这些都毫无价值。今天我找到了一个解决方案:
在D:下载并安装python(为了保留我的安装),然后将文件夹Tcl复制到我的C:安装中,位于相同的相对位置:C:\ Python27
在Windows 10中使用mayplotlib.pyplot生成简单的散点图时遇到了类似的问题。我通过在“控制面板>系统和安全>系统>高级系统设置>环境变量>用户变量”中添加新的环境变量来解决:
变量名称:TCL_LIBRARY,变量值= C:\ Python27 \ tcl \ tcl8.5
变量名称:TK_LIBRARY,变量值= C:\ Python27 \ tcl \ tk8.5