Exemple #1
0
 def get_lib_dirs(self):
     # https://github.com/sametmax/devpy/blob/66a150817644edf825d19b80f644e7d05b2a3e86/src/devpy/tb.py#L10
     # https://stackoverflow.com/questions/122327/how-do-i-find-the-location-of-my-python-site-packages-directory/122340
     lib_dirs = [
         sysconfig.get_path('stdlib'), site.USER_SITE,
         distutils.sysconfig.get_python_lib()
     ]
     if hasattr(sys, 'real_prefix'):
         lib_dirs.append(sys.prefix)
         lib_dirs.append(
             sysconfig.get_path('stdlib').replace(sys.prefix,
                                                  sys.real_prefix))
     if hasattr(sys, 'getsitepackages'):
         lib_dirs += site.getsitepackages()
     return [os.path.abspath(d) for d in lib_dirs]
Exemple #2
0
    def _get_lib_dirs():
        # https://git.io/fh5wm
        # https://stackoverflow.com/q/122327/2291710
        lib_dirs = []

        stdlib_path = sysconfig.get_path("stdlib")

        if stdlib_path is not None:
            lib_dirs.append(stdlib_path)

        if site.USER_SITE is not None:
            lib_dirs.append(site.USER_SITE)

        if hasattr(site, "getsitepackages"):
            site_packages = site.getsitepackages()
            lib_dirs.extend(site_packages)

        if hasattr(sys, "real_prefix"):
            lib_dirs.append(sys.real_prefix)
            if stdlib_path is not None:
                sys_prefix = stdlib_path.replace(sys.prefix, sys.real_prefix)
                lib_dirs.append(sys_prefix)

        try:
            python_lib = distutils.sysconfig.get_python_lib()
        except distutils.errors.DistutilsError:
            pass
        else:
            lib_dirs.append(python_lib)

        return [os.path.abspath(d) + os.sep for d in lib_dirs]
    def _get_lib_dirs():
        # https://git.io/fh5wm
        # https://stackoverflow.com/q/122327/2291710
        lib_dirs = [
            sysconfig.get_path("stdlib"),
            site.USER_SITE,
            distutils.sysconfig.get_python_lib(),
        ]

        try:
            real_prefix = sys.real_prefix
        except AttributeError:
            pass
        else:
            lib_dirs.append(sys.prefix)
            lib_dirs.append(sysconfig.get_path("stdlib").replace(sys.prefix, real_prefix))

        try:
            lib_dirs += site.getsitepackages()
        except AttributeError:
            pass

        return [os.path.abspath(d) + os.sep for d in lib_dirs]
Exemple #4
0
def execute_get_path(library_id,
                     scheme=None,
                     platbase_value=None,
                     expand=True):
    # print("(execute_get_path) library_id=%s, scheme=%s, platbase_value=%s, expand=%s" % (library_id, scheme, platbase_value, expand))
    funcdesc = "sysconfig.get_path()"
    if scheme:
        schemedesc = "scheme=%s" % scheme
    else:
        schemedesc = "scheme=<default>"
    if expand:
        if platbase_value:
            argdesc = "platbase=%s" % platbase_value
        else:
            argdesc = "platbase=<default>"
    else:
        argdesc = "expand=False"

    if scheme:
        if expand:
            if platbase_value:
                libname = sysconfig.get_path(library_id,
                                             scheme,
                                             vars={'platbase': platbase_value})
            else:
                libname = sysconfig.get_path(library_id, scheme)
        else:
            libname = sysconfig.get_path(library_id, scheme, expand=False)
    else:
        if expand:
            if platbase_value:
                libname = sysconfig.get_path(library_id,
                                             vars={'platbase': platbase_value})
            else:
                libname = sysconfig.get_path(library_id)
        else:
            libname = sysconfig.get_path(library_id, expand=False)

    return (libname, funcdesc, schemedesc, argdesc)
Exemple #5
0
    def get_python_include_dir(python_version):
        """Get include directory associated with the current python
        interpreter."""
        # determine python include dir
        python_include_dir = sysconfig.get_config_var('INCLUDEPY')

        # if Python.h not found (or python_include_dir is None), try to find a
        # suitable include dir
        found_python_h = (python_include_dir is not None or os.path.exists(
            os.path.join(python_include_dir, 'Python.h')))

        if not found_python_h:

            # NOTE(opadron): these possible prefixes must be guarded against
            # AttributeErrors and KeyErrors because they each can throw on
            # different platforms or even different builds on the same platform.
            include_py = sysconfig.get_config_var('INCLUDEPY')
            include_dir = sysconfig.get_config_var('INCLUDEDIR')
            include = None
            plat_include = None
            python_inc = None
            python_inc2 = None

            try:
                include = sysconfig.get_path('include')
            except (AttributeError, KeyError):
                pass

            try:
                plat_include = sysconfig.get_path('platinclude')
            except (AttributeError, KeyError):
                pass

            try:
                python_inc = sysconfig.get_python_inc()
            except AttributeError:
                pass

            if include_py is not None:
                include_py = os.path.dirname(include_py)
            if include is not None:
                include = os.path.dirname(include)
            if plat_include is not None:
                plat_include = os.path.dirname(plat_include)
            if python_inc is not None:
                python_inc2 = os.path.join(
                    python_inc, ".".join(map(str, sys.version_info[:2])))

            candidate_prefixes = list(
                filter(bool, (
                    include_py,
                    include_dir,
                    include,
                    plat_include,
                    python_inc,
                    python_inc2,
                )))

            candidate_versions = (python_version, )
            if python_version:
                candidate_versions += ('', )

            candidates = (os.path.join(prefix, ''.join(('python', ver)))
                          for (prefix, ver) in itertools.product(
                              candidate_prefixes, candidate_versions))

            for candidate in candidates:
                if os.path.exists(os.path.join(candidate, 'Python.h')):
                    # we found an include directory
                    python_include_dir = candidate
                    break

        # TODO(opadron): what happens if we don't find an include directory?
        #                Throw SKBuildError?

        return python_include_dir
Exemple #6
0
    elif opt == '--exec-prefix':
        try:
            print(sysconfig.EXEC_PREFIX)
        except:
            print(sysconfig.get_config_var('exec_prefix'))

    elif opt in ('--includes', '--cflags'):
        try:
            flags = [
                '-I' + sysconfig.get_python_inc(),
                '-I' + sysconfig.get_python_inc(plat_specific=True)
            ]
        except:
            flags = [
                '-I' + sysconfig.get_path('include'),
                '-I' + sysconfig.get_path('platinclude')
            ]

        try:
            import numpy
            flags += [
                '-I' + numpy.get_include() +
                ' -DSMILEI_USE_NUMPY -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION'
            ]
        except:
            pass

        if opt == '--cflags':
            flags.extend(getvar('CFLAGS').split())
        print(' '.join(flags))
Exemple #7
0
        funcdesc = "distutils.sysconfig.get_python_lib()"
        print(template % (funcdesc, schemedesc, argdesc, libname))

#---

print("")
print("")

print("Getting platform specific library:")
template = "  %-45s %-20s %-25s %s"
for scheme in schemes:
    funcdesc = "sysconfig.get_path()"
    argdesc = "expand=False"
    counters = posix_prefix_counters if scheme == "posix_prefix" else non_posix_prefix_counters
    if scheme:
        libname = sysconfig.get_path('platlib', scheme, expand=False)
        schemedesc = "scheme=%s" % scheme
    else:
        libname = sysconfig.get_path('platlib', expand=False)
        schemedesc = "scheme=<default>"
    print(template % (funcdesc, schemedesc, argdesc, libname))
    ndx = SITE_NDX if libname.endswith("site-packages") else DIST_NDX
    counters[ndx] += 1
    fcounters = get_path_counters
    fcounters[ndx] += 1

    if scheme:
        libname = sysconfig.get_path('platlib', scheme)
        schemedesc = "scheme=%s" % scheme
    else:
        libname = sysconfig.get_path('platlib')
Exemple #8
0
            print(sysconfig.PREFIX)
        except:
            print(sysconfig.get_config_var('prefix'))
    
    elif opt == '--exec-prefix':
        try:
            print(sysconfig.EXEC_PREFIX)
        except:
            print(sysconfig.get_config_var('exec_prefix'))
    
    elif opt in ('--includes', '--cflags'):
        try:
            flags = ['-I' + sysconfig.get_python_inc(),
                     '-I' + sysconfig.get_python_inc(plat_specific=True)]
        except:
            flags = ['-I' + sysconfig.get_path('include'),
                     '-I' + sysconfig.get_path('platinclude')]
        
        try:
            import numpy
            flags += ['-I' + numpy.get_include() + ' -DSMILEI_USE_NUMPY -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION']
        except:
            pass
        
        if opt == '--cflags':
            flags.extend(getvar('CFLAGS').split())
        print(' '.join(flags))

    elif opt in ('--libs', '--ldflags'):
        try:
            libs = ['-lpython' + pyver + sys.abiflags]