The RunEnvironment helper prepare PATH, LD_LIBRARY_PATH and DYLD_LIBRARY_PATH environment variables to locate shared libraries and executables of your requirements at runtime.

This helper is specially useful:

  • If you are requiring packages with shared libraries and you are running some executable that needs those libraries.
  • If you have a requirement with some tool (executable) and you need it in the path.
from conans import ConanFile, RunEnvironment

class ExampleConan(ConanFile):

   def build(self):
      env_build = RunEnvironment(self)
      with tools.environment_append(env_build.vars):"....")
         # All the requirements bin folder will be available at PATH
         # All the lib folders will be available in LD_LIBRARY_PATH and DYLD_LIBRARY_PATH

It sets the following environment variables:

PATH Containing all the requirements bin folders.
LD_LIBRARY_PATH Containing all the requirements lib folders. (Linux)
DYLD_LIBRARY_PATH Containing all the requirements lib folders. (OSX)


Security restrictions might apply in OSX (read this thread), so the DYLD_LIBRARY_PATH environment variable is not directly transferred to the child process. In that case, you have to use it explicitly in your

def build(self):
    env_build = RunEnvironment(self)
    with tools.environment_append(env_build.vars):
        #'./myexetool") # won't work, even if 'DYLD_LIBRARY_PATH' is in the env'DYLD_LIBRARY_PATH=%s ./myexetool" % os.environ['DYLD_LIBRARY_PATH'])