diff --git a/python/lammps.py b/python/lammps.py index ee921a1f48af89a5b9cd756a50e01a2627faa9b3..bd65634ee504cd9db8b13898755a15a6308746fc 100644 --- a/python/lammps.py +++ b/python/lammps.py @@ -58,6 +58,13 @@ class lammps(object): # determine module location modpath = dirname(abspath(getsourcefile(lambda:0))) + self.lib = None + + # if a pointer to a LAMMPS object is handed in, all symbols should already be available. + try: + if ptr: self.lib = CDLL("",RTLD_GLOBAL) + except: + self.lib = None # load liblammps.so unless name is given. # e.g. if name = "g++", load liblammps_g++.so @@ -66,13 +73,13 @@ class lammps(object): # does not need to be set for regular installations. # fall back to loading with a relative path, which typically # requires LD_LIBRARY_PATH to be set appropriately. - - try: - if not name: self.lib = CDLL(join(modpath,"liblammps.so"),RTLD_GLOBAL) - else: self.lib = CDLL(join(modpath,"liblammps_%s.so" % name),RTLD_GLOBAL) - except: - if not name: self.lib = CDLL("liblammps.so",RTLD_GLOBAL) - else: self.lib = CDLL("liblammps_%s.so" % name,RTLD_GLOBAL) + if not self.lib: + try: + if not name: self.lib = CDLL(join(modpath,"liblammps.so"),RTLD_GLOBAL) + else: self.lib = CDLL(join(modpath,"liblammps_%s.so" % name),RTLD_GLOBAL) + except: + if not name: self.lib = CDLL("liblammps.so",RTLD_GLOBAL) + else: self.lib = CDLL("liblammps_%s.so" % name,RTLD_GLOBAL) # if no ptr provided, create an instance of LAMMPS # don't know how to pass an MPI communicator from PyPar