Skip to content

Commit

Permalink
Detect pybind11 header path without depending on pip internals (fixes p…
Browse files Browse the repository at this point in the history
  • Loading branch information
wjakob authored Apr 16, 2018
1 parent fd9bc8f commit 060936f
Showing 1 changed file with 24 additions and 7 deletions.
31 changes: 24 additions & 7 deletions pybind11/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,28 @@
from ._version import version_info, __version__ # noqa: F401 imported but unused


def get_include(*args, **kwargs):
def get_include(user=False):
from distutils.dist import Distribution
import os
try:
from pip import locations
return os.path.dirname(
locations.distutils_scheme('pybind11', *args, **kwargs)['headers'])
except ImportError:
return 'include'
import sys

# Are we running in a virtual environment?
virtualenv = hasattr(sys, 'real_prefix') or \
sys.prefix != getattr(sys, "base_prefix", sys.prefix)

if virtualenv:
return os.path.join(sys.prefix, 'include', 'site',
'python' + sys.version[:3])
else:
dist = Distribution({'name': 'pybind11'})
dist.parse_config_files()

dist_cobj = dist.get_command_obj('install', create=True)

# Search for packages in user's home directory?
if user:
dist_cobj.user = user
dist_cobj.prefix = ""
dist_cobj.finalize_options()

return os.path.dirname(dist_cobj.install_headers)

0 comments on commit 060936f

Please sign in to comment.