From 556fee15373c14cd75d2d915e055f4a4b9800388 Mon Sep 17 00:00:00 2001
From: Guilhem Saurel <guilhem.saurel@laas.fr>
Date: Tue, 26 Nov 2019 14:53:26 +0100
Subject: [PATCH] add path.py.in, similar to path.hpp.in

---
 python/CMakeLists.txt                      |  3 +++
 python/example_robot_data/path.py.in       |  1 +
 python/example_robot_data/robots_loader.py | 17 ++++++++++++-----
 3 files changed, 16 insertions(+), 5 deletions(-)
 create mode 100644 python/example_robot_data/path.py.in

diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 998d2c4..ce69528 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -7,3 +7,6 @@ SET(${PROJECT_NAME}_PYTHON_FILES
 FOREACH(python ${${PROJECT_NAME}_PYTHON_FILES})
   PYTHON_INSTALL_ON_SITE(${PY_NAME} ${python})
 ENDFOREACH(python ${${PROJECT_NAME}_PYTHON_FILES})
+
+CONFIGURE_FILE(${PY_NAME}/path.py.in ${PY_NAME}/path.py)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PY_NAME}/path.py DESTINATION "${PYTHON_SITELIB}/${PY_NAME}")
diff --git a/python/example_robot_data/path.py.in b/python/example_robot_data/path.py.in
new file mode 100644
index 0000000..c1b0976
--- /dev/null
+++ b/python/example_robot_data/path.py.in
@@ -0,0 +1 @@
+EXAMPLE_ROBOT_DATA_MODEL_DIR = "${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/robots"
diff --git a/python/example_robot_data/robots_loader.py b/python/example_robot_data/robots_loader.py
index c2c8caa..00cdd8a 100644
--- a/python/example_robot_data/robots_loader.py
+++ b/python/example_robot_data/robots_loader.py
@@ -7,15 +7,22 @@ from pinocchio.robot_wrapper import RobotWrapper
 
 
 def getModelPath(subpath, printmsg=False):
-    base = '../../../share/example-robot-data/robots'
-    main_dir = dirname(dirname(dirname(__file__)))
-    for path in [join(dirname(main_dir), 'robots'), join(main_dir, 'robots')
-                 ] + [join(p, base.strip('/')) for p in sys.path]:
+    paths = [
+        join(dirname(dirname(dirname(dirname(__file__)))), 'robots'),
+        join(dirname(dirname(dirname(__file__))), 'robots')
+    ]
+    try:
+        from .path import EXAMPLE_ROBOT_DATA_MODEL_DIR
+        paths.append(EXAMPLE_ROBOT_DATA_MODEL_DIR)
+    except ImportError:
+        pass
+    paths += [join(p, '../../../share/example-robot-data/robots') for p in sys.path]
+    for path in paths:
         if exists(join(path, subpath.strip('/'))):
             if printmsg:
                 print("using %s as modelPath" % path)
             return path
-    raise IOError('%s not found' % (subpath))
+    raise IOError('%s not found' % subpath)
 
 
 def readParamsFromSrdf(robot, SRDF_PATH, verbose, has_rotor_parameters=True, referencePose='half_sitting'):
-- 
GitLab