Why not refine the exception instead? 

```
raise TankError("Envrionment variable %s referred to in '%s' does not exist" % (parent_path, parent_cfg_path))
```

Seems ambiguous to first report a *warning* and then raise an exception. (Warnings are generally used in the code base to indicate an unexpected state which can be recovered from)