Skip to content

Commit

Permalink
BLD: fix build for py3k + pip. Closes #1857. Thanks to Erik Bray.
Browse files Browse the repository at this point in the history
Also works inside a virtualenv.
  • Loading branch information
rgommers authored and charris committed Aug 13, 2011
1 parent 57b56bc commit dba98cc
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
6 changes: 5 additions & 1 deletion numpy/distutils/ccompiler.py
Expand Up @@ -58,7 +58,11 @@ def CCompiler_spawn(self, cmd, display=None):
if s: if s:
if is_sequence(cmd): if is_sequence(cmd):
cmd = ' '.join(list(cmd)) cmd = ' '.join(list(cmd))
print(o) try:
print(o)
except UnicodeError:
# When installing through pip, `o` can contain non-ascii chars
pass
if re.search('Too many open files', o): if re.search('Too many open files', o):
msg = '\nTry rerunning setup command until build succeeds.' msg = '\nTry rerunning setup command until build succeeds.'
else: else:
Expand Down
13 changes: 13 additions & 0 deletions setup.py
Expand Up @@ -167,6 +167,19 @@ def setup_package():
if os.path.isfile(site_cfg): if os.path.isfile(site_cfg):
shutil.copy(site_cfg, src_path) shutil.copy(site_cfg, src_path)


# Ugly hack to make pip work with Python 3, see #1857.
# Explanation: pip messes with __file__ which interacts badly with the
# change in directory due to the 2to3 conversion. Therefore we restore
# __file__ to what it would have been otherwise.
global __file__
__file__ = os.path.join(os.curdir, os.path.basename(__file__))
if '--egg-base' in sys.argv:
# Change pip-egg-info entry to absolute path, so pip can find it
# after changing directory.
idx = sys.argv.index('--egg-base')
if sys.argv[idx + 1] == 'pip-egg-info':
sys.argv[idx + 1] = os.path.join(local_path, 'pip-egg-info')

old_path = os.getcwd() old_path = os.getcwd()
os.chdir(src_path) os.chdir(src_path)
sys.path.insert(0, src_path) sys.path.insert(0, src_path)
Expand Down

0 comments on commit dba98cc

Please sign in to comment.