Hi Spencer, yes it's a private variable and as such was never supposed to serve as X11 (or Tkinter) availability check... but: I would (and did) also use it, since it's the best option to check this right now.
Cheers, Thomas Spencer Bliven wrote, On 04/22/14 10:46: > I just found the pymol._ext_gui property, which seems to be None if X11 > is off and a positive number if X11 is present. Seeing as it's a private > variable, is it ok to use this to check for X11 presence? > > -Spencer > > > On Thu, Apr 17, 2014 at 10:21 AM, Spencer Bliven <sbli...@ucsd.edu > <mailto:sbli...@ucsd.edu>> wrote: > > Here's what I'm currently using. It seems to work so far. Looking > through the PyMol binary I see about 50 possible names though, so it > would be nice if there were a built-in way to detect X11. > > def hasTk(): > """ Make an educated guess as to whether Tk is installed, > hopefully without triggering any installation on Macs > """ > hasTk = True > if sys.platform=="darwin": #Mac > # Hack: check the path for entries containing 'X11' > hasTk = any([ "X11" in p.upper() for p in sys.path]) > > if hasTk: > try: > import Tkinter > except ImportError: > hasTk = False > > return hasTk > > > On Mon, Apr 14, 2014 at 10:46 AM, Spencer Bliven <sbli...@ucsd.edu > <mailto:sbli...@ucsd.edu>> wrote: > > I'm working on a plugin with a command line interface and a > light-weight tk interface through the plugins menu. This works > fine on Linux, Windows, and open-source Mac builds, but not on > MacPyMol.app. Importing Tkinter causes PyMol to quit with a > prompt to install X11 (but not an ImportError, as far as I can > tell). If X11 is installed there are no errors, but there is not > a plugins menu, so I'd rather not bother loading and > initializing the Tk interface to the plugin. > > How can I detect whether Tk is available? > > I can think of two approaches, but haven't figured out the > correct commands for either. (1) Check the name that pymol was > started with. "MacPyMol.app" does not have Tk, while > "PyMOLX11Hybrid.app" does. I'm not sure how to get the name > (maybe could be guessed from sys.path?), and I know there are a > lot more variants than those two available. (2) Check for the > existence of the plugins menu. But this would have to be done > without importing Tk and triggering the X11 check. > > Is there a simple way to do this I'm overlooking? > > Thanks, > -Spencer -- Thomas Holder PyMOL Schrödinger, Inc. ------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform _______________________________________________ PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net) Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net