In build_ext.py, we see the following code:
elif os.name == "nt": # Look for SWIG in its standard installation directory on # Windows (or so I presume!). If we find it there, great; SEE ---> # if not, act like Unix and assume it's in the PATH. for vers in ("1.3", "1.2", "1.1"): fn = os.path.join("c:\swig%s" % vers, "swig.exe") if os.path.isfile(fn): return fn else: return "swig.exe"
However, it doesn't really work because in spawn.py:
if not dry_run: SEE ---># spawn for NT requires a full path to the .exe try: rc = os.spawnv(os.P_WAIT, executable, cmd) except OSError, exc: # this seems to happen when the command isn't found raise DistutilsExecError, \ "command '%s' failed: %s" % (cmd[0], exc[-1]) if rc != 0: # and this reflects the command running but failing raise DistutilsExecError, \ "command '%s' failed with exit status %d" % (cmd[0], rc)
Thus, if Swig is installed in any place other than c:, the first code will not be smart enough to make things work.