diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py
index 291e812..a1a0fb7 100644
--- a/Lib/distutils/command/sdist.py
+++ b/Lib/distutils/command/sdist.py
@@ -14,7 +14,7 @@
 from distutils.errors import *
 from distutils.filelist import FileList
 from distutils import log
-
+from distutils.util import convert_path
 
 def show_formats ():
     """Print all possible values for the 'formats' option (used by
@@ -311,9 +311,17 @@
 
         # getting distribution.data_files
         if self.distribution.has_data_files():
-            for dirname, filenames in self.distribution.data_files:
-                for filename in filenames:
-                    self.filelist.append(os.path.join(dirname, filename))
+            for item in self.distribution.data_files:
+                if isinstance(item, str): # plain file
+                    item = convert_path(item)
+                    if os.path.isfile(item):
+                        self.filelist.append(item)
+                else:    # a (dirname, filenames) tuple
+                    dirname, filenames = item
+                    for f in filenames:
+                        f = convert_path(os.path.join(dirname, f))
+                        if os.path.isfile(f):
+                            self.filelist.append(f)
 
         if self.distribution.has_ext_modules():
             build_ext = self.get_finalized_command('build_ext')
diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py
index b4e922f..82e5dc6 100644
--- a/Lib/distutils/tests/test_sdist.py
+++ b/Lib/distutils/tests/test_sdist.py
@@ -26,6 +26,8 @@
 setup.py
 data%(sep)sdata.dt
 scripts%(sep)sscript.py
+some%(sep)sfile.txt
+some%(sep)sother_file.txt
 somecode%(sep)s__init__.py
 somecode%(sep)sdoc.dat
 somecode%(sep)sdoc.txt
@@ -167,7 +169,14 @@
         data_dir = join(self.tmp_dir, 'data')
         os.mkdir(data_dir)
         self.write_file((data_dir, 'data.dt'), '#')
-        dist.data_files = [('data', ['data.dt'])]
+        some_dir = join(self.tmp_dir, 'some')
+        os.mkdir(some_dir)
+        self.write_file((some_dir, 'file.txt'), '#')
+        self.write_file((some_dir, 'other_file.txt'), '#')
+
+        dist.data_files = [('data', ['data.dt', 'notexisting']),
+                           'some/file.txt',
+                           'some/other_file.txt']
 
         # adding a script
         script_dir = join(self.tmp_dir, 'scripts')
@@ -175,7 +184,6 @@
         self.write_file((script_dir, 'script.py'), '#')
         dist.scripts = [join('scripts', 'script.py')]
 
-
         cmd.formats = ['zip']
         cmd.use_defaults = True
 
@@ -194,7 +202,7 @@
             zip_file.close()
 
         # making sure everything was added
-        self.assertEquals(len(content), 8)
+        self.assertEquals(len(content), 10)
 
         # checking the MANIFEST
         manifest = open(join(self.tmp_dir, 'MANIFEST')).read()
