It appears that it is one of those Python 3 issues... The tree printer attempts to use io.StringIO, which accepts only unicode, but there is no guarantee that all node representations are unicode, or is it? Especially for filenames, which may depend on filesystem encoding. How SCons deals with them?