diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index 57a110b..3045702 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -631,17 +631,23 @@
         """
         fullname = self.get_ext_fullname(ext_name)
         modpath = fullname.split('.')
-        package = '.'.join(modpath[0:-1])
-        base = modpath[-1]
-        filename = self.get_ext_filename(base)
+        filename = self.get_ext_filename(modpath[-1])
+
         if not self.inplace:
             # no further work needed
+            # returning :
+            #   build_dir/package/path/filename
+            filename = os.path.join(*modpath[:-1]+[filename])
             return os.path.join(self.build_lib, filename)
 
         # the inplace option requires to find the package directory
-        # using the build_py command
+        # using the build_py command for that
+        package = '.'.join(modpath[0:-1])
         build_py = self.get_finalized_command('build_py')
         package_dir = os.path.abspath(build_py.get_package_dir(package))
+
+        # returning
+        #   package_dir/filename
         return os.path.join(package_dir, filename)
 
     def get_ext_fullname(self, ext_name):
diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py
index fe6009b..f0580c1 100644
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
@@ -337,7 +337,8 @@
         self.assertEquals(so_dir, cmd.build_lib)
 
         # inplace = 0, cmd.package = 'bar'
-        cmd.package = 'bar'
+        build_py = cmd.get_finalized_command('build_py')
+        build_py.package_dir = {'': 'bar'}
         path = cmd.get_ext_fullpath('foo')
         # checking that the last directory is the build_dir
         path = os.path.split(path)[0]
@@ -355,12 +356,14 @@
         # checking that the last directory is bar
         path = os.path.split(path)[0]
         lastdir = os.path.split(path)[-1]
-        self.assertEquals(lastdir, cmd.package)
+        self.assertEquals(lastdir, 'bar')
 
-    def test_build_ext_inplace(self):
-        etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
-        etree_ext = Extension('lxml.etree', [etree_c])
-        dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
+    def test_ext_fullpath(self):
+        # building lxml.etree inplace
+        #etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
+        #etree_ext = Extension('lxml.etree', [etree_c])
+        #dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
+        dist = Distribution()
         cmd = build_ext(dist)
         cmd.inplace = 1
         cmd.distribution.package_dir = {'': 'src'}
@@ -370,6 +373,28 @@
         path = cmd.get_ext_fullpath('lxml.etree')
         self.assertEquals(wanted, path)
 
+        # building lxml.etree not inplace
+        cmd.inplace = 0
+        cmd.build_lib = os.path.join(curdir, 'tmpdir')
+        wanted = os.path.join(curdir, 'tmpdir', 'lxml', 'etree.so')
+        path = cmd.get_ext_fullpath('lxml.etree')
+        self.assertEquals(wanted, path)
+
+        # building twisted.runner.portmap not inplace
+        build_py = cmd.get_finalized_command('build_py')
+        build_py.package_dir = {}
+        cmd.distribution.packages = ['twisted', 'twisted.runner.portmap']
+        path = cmd.get_ext_fullpath('twisted.runner.portmap')
+        wanted = os.path.join(curdir, 'tmpdir', 'twisted', 'runner',
+                              'portmap.so')
+        self.assertEquals(wanted, path)
+
+        # building twisted.runner.portmap inplace
+        cmd.inplace = 1
+        path = cmd.get_ext_fullpath('twisted.runner.portmap')
+        wanted = os.path.join(curdir, 'twisted', 'runner', 'portmap.so')
+        self.assertEquals(wanted, path)
+
 def test_suite():
     src = _get_source_filename()
     if not os.path.exists(src):
diff --git a/Misc/NEWS b/Misc/NEWS
index 83554f3..9f09a4c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -857,6 +857,8 @@
 Library
 -------
 
+- Issue #6403: Fixed package path usage in build_ext.
+
 - Issue #6365: Distutils build_ext inplace mode was copying the compiled 
   extension in a subdirectory if the extension name had dots.
 
