On 2016-09-27 18:47, Gregory Ewing wrote: > I don't normally use IDLE, but I had occasion to use it > on MacOSX 10.6 to answer someone's question, and of course > it didn't work properly due to Apple's broken Tcl/Tk. > > I followed the advice to install ActiveState Tcl 8.5.18.0, > but my Python still wants to use Apple's Tcl. > > How do I persuade Python to use the new one I've installed? > It's a framework install of Python 3.5 that I compiled > myself. Do I need to rebuild it to get it to pick up the > right Tcl? Or is there an environment variable I can set?
As you probably know, on OS X the dynamic load library paths linked into executables and the like are normally absolute paths. This applies to _tkinter.so. You can check the path with otool -L. $ python3.5 -c "import _tkinter; print(_tkinter.__file__)" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload/_tkinter.cpython-35m-darwin.so $ otool -L $(python3.5 -c "import _tkinter; print(_tkinter.__file__)") /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload/_tkinter.cpython-35m-darwin.so: /Library/Frameworks/Tcl.framework/Versions/8.5/Tcl (compatibility version 8.5.0, current version 8.5.18) /Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility version 8.5.0, current version 8.5.18) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0) The ActiveState Tcl/Tk frameworks are installed in /Library/Frameworks; your _tkinter was linked with the Apple-supplied versions in /System/Library/Frameworks. If you rebuild _tkinter after the new versions are in /Library/Frameworks, everything should be just fine, since, by default, /Library/Frameworks is searched at link time before /System/Library/Frameworks. You could also override the search order at run time for all frameworks with: DYLD_FRAMEWORK_PATH=/Library/Frameworks See man dyld for more info. Or you might be able to use install_name_tool to modify the path to the framework. -- https://mail.python.org/mailman/listinfo/python-list