2011-11-18 125 views
1

我安装了TkTreeCtrl 2.4.1(用c写成)以及TkTreectrl 1.0(用python编写),它包装了原来的c库。在OSX上安装TkTreectrl

当我尝试在Python中创建任何TREECTRL对象,我得到的错误:

_tkinter.TclError: can't find package treectrl 

我是很新,Python,但我猜想,Python的包装代码找不到c库。

当我安装TkTreeCtrl(c)时,它将自己安装在'/usr/lib/treectrl2.4.1'中作为.dylib文件。

我从来没有使用过.dylib,但是一些Google使用者告诉我将它所在的目录添加到环境变量'DYLD_LIBRARY_PATH'中。

我做到了,但没有运气。我不知道我甚至知道我的问题是什么,所以任何帮助将不胜感激!

我正在运行Lion和Python 2.7。 Python是使用MacPorts安装的。

+0

哪个版本的OS X?哪位Python解释器? –

+0

我加了我的详细资料。出于好奇,当问题被编辑时,评论者是否会收到通知? – Dean

+0

(我不这么认为,但添加新评论时会收到通知。)您确定使用过(安装)并且正在使用MacPorts Python 2.7而不是Apple提供的Python 2.7吗?后者位于'/ usr/bin/python2.7',默认情况下是'/ usr/bin/python';前者在'/ opt/local/bin/python2.7'上。根据你如何设置你的shell PATH环境变量以及你是否使用了MacPorts'port select python'命令,普通的'python'命令可能会让你(或其他)。另外,在'/ usr/lib'中安装并不好。这是一个由OS X管理的目录。 –

回答

1

对于它的Python端口,MacPorts目前建立并安装了它自己的基于X11的Tcl和Tk端口。看起来您在构建TkTreeCtrl时需要小心,以便为提供Tcl,Tk和X11库和包含文件的MacPorts指定./configure的正确位置。有关选项的名称,请参见./configure --help。您应该找到/opt/local/(MacPorts文件的默认安装位置)下的库和包含文件。

虽然可能有更简单的选择。看来Tcl/Tk的ActiveTcl分布包含TkTreeCtrl。如果您使用与ActiveTcl链接的Python,则只需安装Python TkTreectrl模块,这很简单。在Lion上,ActiveTcl 8.5的免费下载(虽然不是开放源代码)可用here,它将自动与python.org 2.7.2 64位安装程序OS OS here一起使用。 ActiveState还拥有自己的OS X版Python发行版。关于OS X here上Python和Tcl/Tk的一些怪癖的更多信息。请注意,ActiveTcl在OS X上是更原生的实现;它不是基于X11的。

+0

谢谢!我得到它使用ActiveTcl的工作,但要做到这一点,我必须从MacPorts python切换。除了'sudo port select python python27-apple'由于某种原因仍然指向我的MacPorts版本之外,这不会有什么大不了的。为了让它使用其他python,我改变了我的路径,以便MacPorts在其他所有事情之后到来,这从长远来看并不好。 – Dean