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


The RunEnvironment is no longer needed, at least explicitly in It has been integrated into the, run_environment=True) argument. Check

This helper is specially useful if:

  • You are requiring packages with shared libraries and you are running some executable that needs those libraries.

  • You have a requirement with some tool (executable) and you need it to be 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:




Containing all the requirements bin folders.


Containing all the requirements lib folders. (Linux)


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'])

This is already handled automatically by the, run_environment=True) argument.