summaryrefslogtreecommitdiff
path: root/grc/python
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-04-15 13:09:55 -0700
committerJosh Blum <josh@joshknows.com>2011-04-19 18:23:05 -0700
commita92cb89b5529728d9fce781aff85916b3879fbdd (patch)
tree568579da05388206bc64b33bb266ad81ba46f870 /grc/python
parentaf1d0a61d01c7c17dedcb5388ed8a077213d4b4f (diff)
grc: added logic to discover the path to the python interpreter
Rather than simply exec-ing the application w/ "python", use the same interpreter that executed grc w/ full path. Added code to handle the following exceptions: - for a wx app on mac osx, use the pythonw interpreter (this was in the m4 file, but its easier as a runtime check) - for a no gui app on linux, prepend xterm cuz its nice (we were already doing that but its now restricted to linux)
Diffstat (limited to 'grc/python')
-rw-r--r--grc/python/Constants.py6
-rw-r--r--grc/python/Generator.py20
2 files changed, 17 insertions, 9 deletions
diff --git a/grc/python/Constants.py b/grc/python/Constants.py
index e661c39278..868c822aaa 100644
--- a/grc/python/Constants.py
+++ b/grc/python/Constants.py
@@ -1,5 +1,5 @@
"""
-Copyright 2008, 2009 Free Software Foundation, Inc.
+Copyright 2008-2011 Free Software Foundation, Inc.
This file is part of GNU Radio
GNU Radio Companion is free software; you can redistribute it and/or
@@ -23,10 +23,8 @@ from gnuradio import gr
_gr_prefs = gr.prefs()
-PYEXEC = os.environ.get('PYTHONW', _gr_prefs.get_string('grc', 'pythonw', ''))
-
#setup paths
-PATH_SEP = ':'
+PATH_SEP = {'/':':', '\\':';'}[os.path.sep]
DOCS_DIR = os.environ.get('GR_DOC_DIR', _gr_prefs.get_string('grc', 'doc_dir', ''))
HIER_BLOCKS_LIB_DIR = os.path.join(os.path.expanduser('~'), '.grc_gnuradio')
BLOCKS_DIRS = filter( #filter blank strings
diff --git a/grc/python/Generator.py b/grc/python/Generator.py
index b669fa65af..b31f0a009d 100644
--- a/grc/python/Generator.py
+++ b/grc/python/Generator.py
@@ -18,14 +18,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
"""
import os
+import sys
import subprocess
import tempfile
from Cheetah.Template import Template
import expr_utils
from Constants import \
TOP_BLOCK_FILE_MODE, HIER_BLOCK_FILE_MODE, \
- HIER_BLOCKS_LIB_DIR, PYEXEC, \
- FLOW_GRAPH_TEMPLATE
+ HIER_BLOCKS_LIB_DIR, FLOW_GRAPH_TEMPLATE
import convert_hier
from .. gui import Messages
@@ -74,10 +74,20 @@ Add a Misc->Throttle block to your flow graph to avoid CPU congestion.''')
Execute this python flow graph.
@return a popen object
"""
- #execute
- cmds = [PYEXEC, '-u', self.get_file_path()] #-u is unbuffered stdio
- if self._generate_options == 'no_gui':
+ #extract the path to the python executable
+ python_exe = sys.executable
+
+ #when using wx gui on mac os, execute with pythonw
+ if self._generate_options == 'wx_gui' and 'darwin' in sys.platform.lower():
+ python_exe += 'w'
+
+ #setup the command args to run
+ cmds = [python_exe, '-u', self.get_file_path()] #-u is unbuffered stdio
+
+ #when in no gui mode on linux, use an xterm (looks nice)
+ if self._generate_options == 'no_gui' and 'linux' in sys.platform.lower():
cmds = ['xterm', '-e'] + cmds
+
p = subprocess.Popen(args=cmds, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, universal_newlines=True)
return p