diff --git a/src/bindings/python/SConscript b/src/bindings/python/SConscript
index 0a905b7a6341bcc014a91658ce77b9b77a99fb4c..dcea2056a726211a91f0aec793b39b4e4bdf9bb2 100644
--- a/src/bindings/python/SConscript
+++ b/src/bindings/python/SConscript
@@ -17,13 +17,13 @@ swig = pythonenv.Command("hammer.i", "../swig/hammer.i", Copy("$TARGET", "$SOURC
 setup = ['setup.py']
 pydir = os.path.join(env['BUILD_BASE'], 'src/bindings/python')
 #libhammer_python = pythonenv.SharedLibrary('hammer', swig, SHLIBPREFIX='_')
-libhammer_python = pythonenv.Command(None, [swig, setup], 'python ' + os.path.join(pydir, 'setup.py') + ' build_ext --swig-opts="-outdir ' + pydir + ' -DHAMMER_INTERNAL__NO_STDARG_H -Isrc"')
+libhammer_python = pythonenv.Command(['hammer.py', 'hammer_wrap.c'], [swig, setup], 'python ' + os.path.join(pydir, 'setup.py') + ' build_ext --inplace')
 Default(libhammer_python)
 
 pytestenv = pythonenv.Clone()
 pytestenv['ENV']['LD_LIBRARY_PATH'] = os.path.dirname(str(libhammer_shared[0]))
 pytests = ['hammer_tests.py']
-pytestexec = pytestenv.Command(['hammer.pyc', 'hammer_tests.pyc'], pytests + libhammer_python, "nosetests -vv $SOURCE")
+pytestexec = pytestenv.Command(['hammer.pyc', 'hammer_tests.pyc'], pytests + libhammer_python, "LD_LIBRARY_PATH=" + os.path.dirname(str(libhammer_shared[0])) + " nosetests -vv $SOURCE")
 pytest = Alias("testpython", [pytestexec], pytestexec)
 AlwaysBuild(pytest)
 testruns.append(pytest)
diff --git a/src/bindings/python/setup.py b/src/bindings/python/setup.py
index 2f42fa060a29f71d4ab9f7c7e026ea2e4c5eeeb5..720590e69c4dfa29ebb9a8e42de93c23adef5b8e 100644
--- a/src/bindings/python/setup.py
+++ b/src/bindings/python/setup.py
@@ -3,18 +3,22 @@
 """
 setup.py for Hammer bindings
 """
-import os.path, sys
+import os, os.path, sys
 from distutils.core import setup, Extension
 
+invoked = os.getcwd()
+os.chdir(os.path.dirname(sys.argv[0]))
+
 setup(name="hammer",
       version="0.9.0",
       author="Upstanding Hackers, LLC",
       author_email="hammer@upstandinghackers.com",
       url="https://github.com/UpstandingHackers/hammer",
       description="""The Hammer parser combinator library""",
-      ext_modules=[Extension('_hammer', [os.path.join(os.path.dirname(sys.argv[0]),
-                                                      'hammer.i')],
-                             # swig_opts is set by SConscript
+      ext_modules=[Extension('_hammer', ['hammer.i'],
+                             swig_opts=['-DHAMMER_INTERNAL__NO_STDARG_H',
+                                        #('-outdir', os.getcwd()),
+                                        '-I../../'],
                              define_macros=[('SWIG', None)],
                              depends=['allocator.h', 
                                       'glue.h', 
@@ -22,9 +26,11 @@ setup(name="hammer",
                                       'internal.h',],
                              extra_compile_args=['-fPIC',
                                                  '-std=gnu99',],
-                             include_dirs=['src'],
-                             library_dirs=['src'],
+                             include_dirs=['../../'],
+                             library_dirs=['../../'],
                              libraries=['hammer'],)],
       
       py_modules=['hammer'],
 )
+
+os.chdir(invoked)