aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/config.py')
-rw-r--r--setuptools/config.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/setuptools/config.py b/setuptools/config.py
index b2c0cea3..889dc683 100644
--- a/setuptools/config.py
+++ b/setuptools/config.py
@@ -5,7 +5,7 @@ import sys
from collections import defaultdict
from functools import partial
-from distutils.errors import DistutilsOptionError
+from distutils.errors import DistutilsOptionError, DistutilsFileError
from setuptools.py26compat import import_module
from setuptools.extern.six import string_types
@@ -23,6 +23,15 @@ def read_configuration(filepath, find_others=False):
"""
from setuptools.dist import Distribution, _Distribution
+ filepath = os.path.abspath(filepath)
+
+ if not os.path.isfile(filepath):
+ raise DistutilsFileError(
+ 'Configuration file %s does not exist.' % filepath)
+
+ current_directory = os.getcwd()
+ os.chdir(os.path.dirname(filepath))
+
dist = Distribution()
filenames = dist.find_config_files() if find_others else []
@@ -33,6 +42,8 @@ def read_configuration(filepath, find_others=False):
handlers = parse_configuration(dist, dist.command_options)
+ os.chdir(current_directory)
+
return configuration_to_dict(handlers)