From: Philip J. <pj...@gr...> - 2007-11-17 08:49:38
|
On Nov 15, 2007, at 10:40 PM, Mehendran T wrote: > Hi, > > I have started implementing platform module and I have finished > most of the functions. But I have got problem when writing a function > which returns architecture info. > > I am not able to get 'bit architecture' and 'linkage format' used for > the executable. > >> From python: > > In Linux: > >>>> import platform >>>> platform.architecture() > ('32bit', 'ELF') > > In Windows: > >>>> import platform >>>> platform.architecture() > ('32bit', 'WindowsPE') > > I could get JVM bit architecture, but I couldn't get the output > shown above using java. > System.getProperty("sun.arch.data.model") will return either 32 or 64. Apparently this works on Sun and Blackdown's JVMs (according to some googleling), but we should assume it won't always exist. It looks like CPython's platform module is actually running the UNIX 'file' command on sys.executable to determine the linkage format. On windows it doesn't have file so it falls back to using defaults for its sys.platform (that's where it got 'WindowsPE'). Jython doesn't have a valid sys.executable (it's always None), probably because Java doesn't provide any way of getting argv[0]. I've been wanting to add sys.executable for setuptools, though -- my plan was to have the jython command line script pass the executable name along, e.g.: #!/bin/sh java -Dpython.executable="$0" org.python.util.jython "$@" Even with that sys.executable could still be None in some cases, for example if you're embedding jython somewhere -- Philip Jenvey |