/ / Mac用Enthought-CanopyのTkinterとの競合 - python、tkinter、enthought、canopy

Enthought-CanopyのTkinterとの衝突 - python、tkinter、enthought、canopy

私はMacでEnthough-Canopyを使って簡単なtkinter guiをコンパイルしようとしているときに問題があります。これは私がコンパイルしようとしているコードです:

from Tkinter import *
root= Tk();
root.title("Toplevel")
Label(root,text="This is the Toplevel").pack(pady=10)
root.mainloop()

これは私が受け取るメッセージです:

ImportError                               Traceback (most recent call last)
/Applications/Canopy.app/appdata/canopy-1.0.0.1160.macosx-
x86_64/Canopy.app/Contents/lib/python2.7/site-packages/IPython/utils/py3compat.pyc in
execfile(fname, *where)
181             else:
182                 filename = fname
--> 183             __builtin__.execfile(filename, *where)
/var/folders/m1/70f55r290cz7j_sjc010k0n00000gn/T/tmp1gLNQA.py in <module>()
----> 1 from Tkinter import *
2
3 root= Tk();
4
5 root.title("Toplevel")
/Applications/Canopy.app/appdata/canopy-1.0.0.1160.macosx-
x86_64/Canopy.app/Contents/lib/python2.7/lib-tk/Tkinter.py in <module>()
37     # Attempt to configure Tcl/Tk without requiring PATH
38     import FixTk
---> 39 import _tkinter # If this fails your Python may not be configured for Tk
40 tkinter = _tkinter # b/w compat for export
41 TclError = _tkinter.TclError
ImportError: dlopen(/Applications/Canopy.app/appdata/canopy-1.0.0.1160.macosx-
x86_64/Canopy.app/Contents/lib/python2.7/lib-dynload/_tkinter.so, 2): Library not loaded:
/Library/Frameworks/Python.framework/Versions/111.222.33344/lib/libtcl8.5.dylib
Referenced from: /Applications/Canopy.app/appdata/canopy-1.0.0.1160.macosx-
x86_64/Canopy.app/Contents/lib/python2.7/lib-dynload/_tkinter.so
Reason: image not found

主な問題はTKかTCLですが、それは既にインストールされていてうまく機能しています(コードはAptana studio 3でうまくいきます)、しかし私がCanopyでそれを実行しようとすると失敗します。

あなたの時間とサポートをありがとう

回答:

回答№1は2

デフォルトでは、CanopyはQt4グラフィカルバックエンドを使います。これら2つのバックエンドは1つのプロセスに共存できないため、問題が発生します。これを修正するには、Canopy Preferences> Pythonタブで、PyLabバックエンドをInteractive(Qt4)からInline(SVG)に変更してTkinterを使用できるようにします。

この2つの設定を切り替えることができますプロジェクトに応じて(デフォルトのQtバックエンドが一般的により魅力的であるために推奨されます)または戻る必要がない場合は単にインライン(SVG)を指定します。