From 2d3504ff0f006793e4ac0bbc80b0193b7a612b00 Mon Sep 17 00:00:00 2001 From: chemshift Date: Sun, 7 Aug 2022 22:54:59 -0600 Subject: [PATCH 1/5] Locate correct dynamics library directories in Anaconda Environments --- python/lammps/mliap/__init__.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/python/lammps/mliap/__init__.py b/python/lammps/mliap/__init__.py index 57fe97d803..321594ad6d 100644 --- a/python/lammps/mliap/__init__.py +++ b/python/lammps/mliap/__init__.py @@ -4,17 +4,35 @@ # try to improperly start up a new interpreter. import sysconfig import ctypes -library = sysconfig.get_config_vars('INSTSONAME')[0] +import platform + +library_dir = sysconfig.get_config_vars('LIBDIR')[0] +library_name = sysconfig.get_config_vars('LIBRARY')[0] +library = library_dir + "/" + library_name + +OS_name = platform.system() + +if OS_name == "Linux": + SHLIB_SUFFIX = '.so' +elif OS_name == "Darwin": + SHLIB_SUFFIX = '.dylib' +elif OS_name == "Windows": + SHLIB_SUFFIX = '.dll' +else: + SHLIB_SUFFIX = sysconfig.get_config_vars('SHLIB_SUFFIX') + try: pylib = ctypes.CDLL(library) except OSError as e: - if pylib.endswith(".a"): - pylib.strip(".a") + ".so" + if library.endswith(".a"): + library = library.strip(".a") + ".so" pylib = ctypes.CDLL(library) else: raise e + if not pylib.Py_IsInitialized(): raise RuntimeError("This interpreter is not compatible with python-based mliap for LAMMPS.") + del sysconfig, ctypes, library, pylib from .loader import load_model, activate_mliappy From 2227de32314dc762dc19ec80731ca6d5d0efc0e8 Mon Sep 17 00:00:00 2001 From: chemshift Date: Sun, 7 Aug 2022 23:00:35 -0600 Subject: [PATCH 2/5] Update __init__.py --- python/lammps/mliap/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/lammps/mliap/__init__.py b/python/lammps/mliap/__init__.py index 321594ad6d..bc7dd1d6a2 100644 --- a/python/lammps/mliap/__init__.py +++ b/python/lammps/mliap/__init__.py @@ -25,7 +25,7 @@ try: pylib = ctypes.CDLL(library) except OSError as e: if library.endswith(".a"): - library = library.strip(".a") + ".so" + library = library.strip(".a") + SHLIB_SUFFIX pylib = ctypes.CDLL(library) else: raise e From 953d2c738b6fffafdbaa81b962a1d97e4079b44f Mon Sep 17 00:00:00 2001 From: chemshift Date: Mon, 8 Aug 2022 11:45:43 -0600 Subject: [PATCH 3/5] Update __init__.py --- python/lammps/mliap/__init__.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/python/lammps/mliap/__init__.py b/python/lammps/mliap/__init__.py index bc7dd1d6a2..a9ff2c6a70 100644 --- a/python/lammps/mliap/__init__.py +++ b/python/lammps/mliap/__init__.py @@ -6,29 +6,24 @@ import sysconfig import ctypes import platform -library_dir = sysconfig.get_config_vars('LIBDIR')[0] -library_name = sysconfig.get_config_vars('LIBRARY')[0] -library = library_dir + "/" + library_name - +library_dir = sysconfig.get_config_vars('prefix')[0] +py_ver = sysconfig.get_config_vars('VERSION')[0] OS_name = platform.system() if OS_name == "Linux": SHLIB_SUFFIX = '.so' + library = library_dir + '/lib/' + 'libpython' + py_ver + SHLIB_SUFFIX elif OS_name == "Darwin": SHLIB_SUFFIX = '.dylib' + library = library_dir + '/lib/' + 'libpython' + py_ver + SHLIB_SUFFIX elif OS_name == "Windows": SHLIB_SUFFIX = '.dll' -else: - SHLIB_SUFFIX = sysconfig.get_config_vars('SHLIB_SUFFIX') + library = library_dir + '\\' + 'python' + py_ver + SHLIB_SUFFIX try: pylib = ctypes.CDLL(library) -except OSError as e: - if library.endswith(".a"): - library = library.strip(".a") + SHLIB_SUFFIX - pylib = ctypes.CDLL(library) - else: - raise e +except: + OSError if not pylib.Py_IsInitialized(): raise RuntimeError("This interpreter is not compatible with python-based mliap for LAMMPS.") From fd2ab2a8b9c42c6226f181fd29bf44261e7a0621 Mon Sep 17 00:00:00 2001 From: chemshift Date: Mon, 8 Aug 2022 12:08:46 -0600 Subject: [PATCH 4/5] Update __init__.py --- python/lammps/mliap/__init__.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/python/lammps/mliap/__init__.py b/python/lammps/mliap/__init__.py index a9ff2c6a70..02d876bf9d 100644 --- a/python/lammps/mliap/__init__.py +++ b/python/lammps/mliap/__init__.py @@ -6,19 +6,18 @@ import sysconfig import ctypes import platform -library_dir = sysconfig.get_config_vars('prefix')[0] py_ver = sysconfig.get_config_vars('VERSION')[0] OS_name = platform.system() if OS_name == "Linux": SHLIB_SUFFIX = '.so' - library = library_dir + '/lib/' + 'libpython' + py_ver + SHLIB_SUFFIX + library = 'libpython' + py_ver + SHLIB_SUFFIX elif OS_name == "Darwin": SHLIB_SUFFIX = '.dylib' - library = library_dir + '/lib/' + 'libpython' + py_ver + SHLIB_SUFFIX + library = 'libpython' + py_ver + SHLIB_SUFFIX elif OS_name == "Windows": SHLIB_SUFFIX = '.dll' - library = library_dir + '\\' + 'python' + py_ver + SHLIB_SUFFIX + library = 'python' + py_ver + SHLIB_SUFFIX try: pylib = ctypes.CDLL(library) From f1cca7d37d283095dbdd400ba0b749a65faa5565 Mon Sep 17 00:00:00 2001 From: Dionysios Sema <75517225+chemshift@users.noreply.github.com> Date: Wed, 10 Aug 2022 12:22:29 -0600 Subject: [PATCH 5/5] Update __init__.py --- python/lammps/mliap/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/lammps/mliap/__init__.py b/python/lammps/mliap/__init__.py index 02d876bf9d..cfe3fb6b38 100644 --- a/python/lammps/mliap/__init__.py +++ b/python/lammps/mliap/__init__.py @@ -21,8 +21,8 @@ elif OS_name == "Windows": try: pylib = ctypes.CDLL(library) -except: - OSError +except Exception as e: + raise OSError("Unable to locate python shared library") from e if not pylib.Py_IsInitialized(): raise RuntimeError("This interpreter is not compatible with python-based mliap for LAMMPS.")