diff --git a/changelog.d/3070.misc.rst b/changelog.d/3070.misc.rst new file mode 100644 index 0000000000..871b5d0050 --- /dev/null +++ b/changelog.d/3070.misc.rst @@ -0,0 +1 @@ +Avoid AttributeError in easy_install.create_home_path when sysconfig.get_config_vars values are not strings. diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index e25090b840..ef1a9b235f 100644 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -1334,7 +1334,7 @@ def create_home_path(self): if not self.user: return home = convert_path(os.path.expanduser("~")) - for name, path in self.config_vars.items(): + for path in only_strs(self.config_vars.values()): if path.startswith(home) and not os.path.isdir(path): self.debug_print("os.makedirs('%s', 0o700)" % path) os.makedirs(path, 0o700) @@ -2304,6 +2304,13 @@ def current_umask(): return tmp +def only_strs(values): + """ + Exclude non-str values. Ref #3063. + """ + return filter(lambda val: isinstance(val, str), values) + + class EasyInstallDeprecationWarning(SetuptoolsDeprecationWarning): """ Warning for EasyInstall deprecations, bypassing suppression.