diff --git a/python/lammps.py b/python/lammps.py
index 417427eb4b715bb64cdabeceb65b93ae036f492c..7576138f1a2c0b49e9969da692169590857fdf27 100644
--- a/python/lammps.py
+++ b/python/lammps.py
@@ -209,6 +209,7 @@ class lammps(object):
     self.c_bigint = get_ctypes_int(self.extract_setting("bigint"))
     self.c_tagint = get_ctypes_int(self.extract_setting("tagint"))
     self.c_imageint = get_ctypes_int(self.extract_setting("imageint"))
+    self._installed_packages = None
 
   # shut-down LAMMPS instance
 
@@ -562,13 +563,36 @@ class lammps(object):
                                  shrinkexceed)
 
   @property
-  def uses_exceptions(self):
+  def has_exceptions(self):
     """ Return whether the LAMMPS shared library was compiled with C++ exceptions handling enabled """
-    try:
-      if self.lib.lammps_has_error:
-        return True
-    except(AttributeError):
-      return False
+    return self.lib.lammps_config_has_exceptions() != 0
+
+  @property
+  def has_gzip_support(self):
+    return self.lib.lammps_config_has_gzip_support() != 0
+
+  @property
+  def has_png_support(self):
+    return self.lib.lammps_config_has_png_support() != 0
+
+  @property
+  def has_jpeg_support(self):
+    return self.lib.lammps_config_has_jpeg_support() != 0
+
+  @property
+  def has_ffmpeg_support(self):
+    return self.lib.lammps_config_has_ffmpeg_support() != 0
+
+  @property
+  def installed_packages(self):
+    if self._installed_packages is None:
+      self._installed_packages = []
+      npackages = self.lib.lammps_config_package_count()
+      sb = create_string_buffer(100)
+      for idx in range(npackages):
+        self.lib.lammps_config_package_name(idx, sb, 100)
+        self._installed_packages.append(sb.value.decode())
+    return self._installed_packages
 
 # -------------------------------------------------------------------------
 # -------------------------------------------------------------------------
diff --git a/src/info.cpp b/src/info.cpp
index 7b2165bf70cb308e4ae981846e64feb83ab4612b..748354e8784aeda7a28d347e896ab3b53d8c56e1 100644
--- a/src/info.cpp
+++ b/src/info.cpp
@@ -1190,6 +1190,15 @@ bool Info::has_exceptions() {
 #endif
 }
 
+bool Info::has_package(const char * package_name) {
+  for(int i = 0; LAMMPS::installed_packages[i] != NULL; ++i) {
+    if(strcmp(package_name, LAMMPS::installed_packages[i]) == 0) {
+      return true;
+    }
+  }
+  return false;
+}
+
 /* ---------------------------------------------------------------------- */
 
 char **Info::get_variable_names(int &num) {
diff --git a/src/info.h b/src/info.h
index 7d267f62427a5addd378a41f03defec954d729f7..058400df781935fcc6dd7b6165d8de6808a25752 100644
--- a/src/info.h
+++ b/src/info.h
@@ -38,6 +38,7 @@ class Info : protected Pointers {
   static bool has_jpeg_support();
   static bool has_ffmpeg_support();
   static bool has_exceptions();
+  static bool has_package(const char * package_name);
 
   char **get_variable_names(int &num);
 
diff --git a/src/library.cpp b/src/library.cpp
index 0162c560cea7e21b66cc759a481aae6420c86d51..13e07568667d6319bd52b2c9fe6166decf292953 100644
--- a/src/library.cpp
+++ b/src/library.cpp
@@ -38,6 +38,7 @@
 #include "memory.h"
 #include "error.h"
 #include "force.h"
+#include "info.h"
 
 using namespace LAMMPS_NS;
 
@@ -1522,6 +1523,56 @@ void lammps_create_atoms(void *ptr, int n, tagint *id, int *type,
   END_CAPTURE
 }
 
+// ----------------------------------------------------------------------
+// library API functions for accessing LAMMPS configuration
+// ----------------------------------------------------------------------
+
+int lammps_config_has_package(char * package_name) {
+  return Info::has_package(package_name);
+}
+
+int lammps_config_package_count() {
+  int i = 0;
+  while(LAMMPS::installed_packages[i] != NULL) {
+    ++i;
+  }
+  return i;
+}
+
+int lammps_config_package_name(int index, char * buffer, int max_size) {
+  int i = 0;
+  while(LAMMPS::installed_packages[i] != NULL && i < index) {
+    ++i;
+  }
+
+  if(LAMMPS::installed_packages[i] != NULL) {
+    strncpy(buffer, LAMMPS::installed_packages[i], max_size);
+    return true;
+  }
+
+  return false;
+}
+
+int lammps_config_has_gzip_support() {
+  return Info::has_gzip_support();
+}
+
+int lammps_config_has_png_support() {
+  return Info::has_png_support();
+}
+
+int lammps_config_has_jpeg_support() {
+  return Info::has_jpeg_support();
+}
+
+int lammps_config_has_ffmpeg_support() {
+  return Info::has_ffmpeg_support();
+}
+
+int lammps_config_has_exceptions() {
+  return Info::has_exceptions();
+}
+
 // ----------------------------------------------------------------------
 // library API functions for error handling
 // ----------------------------------------------------------------------
diff --git a/src/library.h b/src/library.h
index 7c21b98daee2894ee4191788eefd94ee80f146dc..82071f673b6755191f5a5e58a99cd6acb24ff4b5 100644
--- a/src/library.h
+++ b/src/library.h
@@ -55,6 +55,15 @@ void lammps_gather_atoms_subset(void *, char *, int, int, int, int *, void *);
 void lammps_scatter_atoms(void *, char *, int, int, void *);
 void lammps_scatter_atoms_subset(void *, char *, int, int, int, int *, void *);
 
+int lammps_config_has_package(char * package_name);
+int lammps_config_package_count();
+int lammps_config_package_name(int index, char * buffer, int max_size);
+int lammps_config_has_gzip_support();
+int lammps_config_has_png_support();
+int lammps_config_has_jpeg_support();
+int lammps_config_has_ffmpeg_support();
+int lammps_config_has_exceptions();
+
 // lammps_create_atoms() takes tagint and imageint as args
 // ifdef insures they are compatible with rest of LAMMPS
 // caller must match to how LAMMPS library is built