Skip to content

Commit

Permalink
[ci] isolate c_api_test library-loading from Python source tree
Browse files Browse the repository at this point in the history
  • Loading branch information
jameslamb committed Mar 3, 2023
1 parent e423120 commit 9220128
Showing 1 changed file with 8 additions and 35 deletions.
43 changes: 8 additions & 35 deletions tests/c_api_test/test_.py
Original file line number Diff line number Diff line change
@@ -1,48 +1,21 @@
# coding: utf-8
import ctypes
from os import environ
from pathlib import Path
from platform import system

import numpy as np
from scipy import sparse


def find_lib_path():
if environ.get('LIGHTGBM_BUILD_DOC', False):
# we don't need lib_lightgbm while building docs
return []

curr_path = Path(__file__).absolute().parent
dll_path = [curr_path,
curr_path.parents[1],
curr_path.parents[1] / 'python-package' / 'lightgbm' / 'compile',
curr_path.parents[1] / 'python-package' / 'compile',
curr_path.parents[1] / 'lib']
try:
from lightgbm.basic import _LIB as LIB
except ModuleNotFoundError:
if system() in ('Windows', 'Microsoft'):
dll_path.append(curr_path.parents[1] / 'python-package' / 'compile' / 'Release/')
dll_path.append(curr_path.parents[1] / 'python-package' / 'compile' / 'windows' / 'x64' / 'DLL')
dll_path.append(curr_path.parents[1] / 'Release')
dll_path.append(curr_path.parents[1] / 'windows' / 'x64' / 'DLL')
dll_path = [p / 'lib_lightgbm.dll' for p in dll_path]
shlib_ext = "dll"
else:
dll_path = [p / 'lib_lightgbm.so' for p in dll_path]
lib_path = [str(p) for p in dll_path if p.is_file()]
if not lib_path:
dll_path_joined = '\n'.join(map(str, dll_path))
raise Exception(f'Cannot find lightgbm library file in following paths:\n{dll_path_joined}')
return lib_path


def LoadDll():
lib_path = find_lib_path()
if len(lib_path) == 0:
return None
lib = ctypes.cdll.LoadLibrary(lib_path[0])
return lib


LIB = LoadDll()
shlib_ext = "so"
print(f"Could not import lightgbm Python package, looking for lib_lightgbm.{shlib_ext} at the repo root")
lib_file = Path(__file__).absolute().parents[2] / f"lib_lightgbm.{shlib_ext}"
LIB = ctypes.cdll.LoadLibrary(lib_file)

LIB.LGBM_GetLastError.restype = ctypes.c_char_p

Expand Down

0 comments on commit 9220128

Please sign in to comment.