title: Pyinstaller - Calling GDAL from os.system (gdal_translate)
body: <p>Greetings learned fellows. Running 32bit Python2.7 on Windows 7. </p>
  
  <p>I'm have a question regarding including GDAL executables in a pyinstaller build.  I am making a system call to run two GDAL functions from the FWTools release. These functions are in the PATH variable on windows <code>C:\Program Files (x86)\FWTools2.4.7\bin</code> and so it runs fine from the Python27 environment. However, this path is not carried over to the pyinstaller build.</p>
  
  <p>The code in question is calling a GDAL function to re-translate an image onto different geospatial co-ordinates.</p>
  
  <pre><code>os.system("gdal_translate -of GTiff -a_ullr  694440.7939 6403967.2406  696438.7261 6404791.6774 -a_srs EPSG:28355 site.tif siteGR.tif")
  
  os.system("gdalinfo siteGR.tif")
  </code></pre>
  
  <p>The runtime works well until it hits the above lines and then returns the following error:</p>
  
  <pre><code>'gdal_translate' is not recognized as an internal or external command,
  operable program or batch file.
  
  'gdalinfo' is not recognized as an internal or external command,
  operable program or batch file.
  </code></pre>
  
  <p>I have tried to include both gdal_translate.exe and gdalinfo.exe in the build folder as binaries, much like you would do for a .dll, but since it is failing after the script has got going, I don't think it is referring to them.</p>
  
  <p>I have included the spec file below. I could use some advice on how to get the pyinstaller build to recognize executables run from the system in a python script. </p>
  
  <p>Spec:</p>
  
  <pre><code># -*- mode: python -*-
  
  a = Analysis(['gis_helper.py'],
               pathex=['C:\\Users\\Hp\\PycharmProjects\\GISdev'],
               hiddenimports=['scipy.linalg.cython_blas', 'scipy.linalg.cython_lapack', 'scipy.special._ufuncs_cxx', 'ctypes.util', 'pandas.util', 'distutils.util', 'shapely', '_socket', '_proj', 'multiprocessing', '_multiprocessing', 'multiprocessing.process', 'multiprocessing.util'],
               hookspath=['C:\\Python27\\Lib\\site-packages\\PyInstaller\\hooks'], 
               runtime_hooks=None)
  
  
  a.binaries1=['geos_c.dll', 'geos_c.dll', 'BINARY'],
  a.binaries2=['python27.dll', 'python27.dll', 'BINARY'],
  a.binaries3=['_socket.pyd', '_socket.pyd', 'BINARY'],
  a.binaries4=['win32api.pyd', 'win32api.pyd', 'BINARY'],
  a.binaries5=['pywintypes27.dll', 'pywintypes27.dll', 'BINARY'],
  a.binaries6=['pythoncom27.dll', 'pythoncom27.dll', 'BINARY'],
  a.binaries7=['_imaging.pyd', '_imaging.pyd', 'BINARY'],
  a.binaries8=['_fblas.pyd', '_fblas.pyd', 'BINARY'],
  a.binaries9=['gdal_translate.exe', 'gdal_translate.exe', 'BINARY'],
  a.binaries10=['gdalinfo.exe', 'gdalinfo.exe', 'BINARY'],
  
  import mpl_toolkits.basemap
  import os
  
  src_basedata = os.path.join(mpl_toolkits.basemap.__path__[0], "data")
  tgt_basedata = os.path.join('mpl_toolkits', 'basemap', 'data')
  
  pyz = PYZ(a.pure)
  exe = EXE(pyz,
            a.scripts,
            [('v',None,'OPTION')],
            a.binaries,  # This needs to be included
            a.binaries1,
            a.binaries2,
            a.binaries3,
            a.binaries4,
            a.binaries5,
            a.binaries6,
            a.binaries7,
            a.binaries8,
            a.binaries9,
            a.binaries10,
            a.zipfiles,
            a.datas + Tree(src_basedata, prefix=tgt_basedata),
            name='gis_helper.exe',
            debug=True,
            strip=None,
            upx=True,
            console=True )
  </code></pre>