diff --git a/python/install.py b/python/install.py index 6128310c0a7f1cb5b5f9f52d74dbed3652a5667a..d589ebca33455708c29f3c83b2d235c5dc5bf972 100644 --- a/python/install.py +++ b/python/install.py @@ -3,42 +3,20 @@ # copy LAMMPS src/liblammps.so and lammps.py to system dirs instructions = """ -Syntax: python install.py [-h] [libdir] [pydir] - libdir = target dir for src/liblammps.so, default = /usr/local/lib - pydir = target dir for lammps.py, default = Python site-packages dir +Syntax: python install.py [-h] [pydir] + pydir = target dir for lammps.py and liblammps.so + default = Python site-packages dir """ import sys,os,commands -if (len(sys.argv) > 1 and sys.argv[1] == "-h") or len(sys.argv) > 3: +if (len(sys.argv) > 1 and sys.argv[1] == "-h") or len(sys.argv) > 2: print instructions sys.exit() -if len(sys.argv) >= 2: libdir = sys.argv[1] -else: libdir = "/usr/local/lib" - -if len(sys.argv) == 3: pydir = sys.argv[2] +if len(sys.argv) == 2: pydir = sys.argv[1] else: pydir = "" -# copy C lib to libdir if it exists -# warn if not in LD_LIBRARY_PATH or LD_LIBRARY_PATH is undefined - -if not os.path.isdir(libdir): - print "ERROR: libdir %s does not exist" % libdir - sys.exit() - -if "LD_LIBRARY_PATH" not in os.environ: - print "WARNING: LD_LIBRARY_PATH undefined, cannot check libdir %s" % libdir -else: - libpaths = os.environ['LD_LIBRARY_PATH'].split(':') - if libdir not in libpaths: - print "WARNING: libdir %s not in LD_LIBRARY_PATH" % libdir - -str = "cp ../src/liblammps.so %s" % libdir -print str -outstr = commands.getoutput(str) -if len(outstr.strip()): print outstr - # copy lammps.py to pydir if it exists # if pydir not specified, install in site-packages via distutils setup() @@ -50,6 +28,9 @@ if pydir: print str outstr = commands.getoutput(str) if len(outstr.strip()): print outstr + str = "cp ../src/liblammps.so %s" % pydir + print str + outstr = commands.getoutput(str) sys.exit() print "installing lammps.py in Python site-packages dir" @@ -59,7 +40,7 @@ os.chdir('../python') # in case invoked via make in src dir from distutils.core import setup sys.argv = ["setup.py","install"] # as if had run "python setup.py install" setup(name = "lammps", - version = "15Aug12", + version = "15May15", author = "Steve Plimpton", author_email = "sjplimp@sandia.gov", url = "http://lammps.sandia.gov", diff --git a/python/lammps.py b/python/lammps.py index be55bcd979f5821ae082851db4c9d69328cf67b4..a3a979cd3f1a1dc8d67d80175fb7dac1c36223a3 100644 --- a/python/lammps.py +++ b/python/lammps.py @@ -15,16 +15,21 @@ import sys,traceback,types from ctypes import * +from os.path import dirname,abspath,join +from inspect import getsourcefile class lammps: def __init__(self,name="",cmdargs=None,ptr=None): + # determine module location + modpath = dirname(abspath(getsourcefile(lambda:0))) + # load liblammps.so by default # if name = "g++", load liblammps_g++.so try: - if not name: self.lib = CDLL("liblammps.so",RTLD_GLOBAL) - else: self.lib = CDLL("liblammps_%s.so" % name,RTLD_GLOBAL) + 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: type,value,tb = sys.exc_info() traceback.print_exception(type,value,tb)