(continuing discussion only) - re: hardcoding:  first:  taking out literal values tends to immune your code from changes over time (e.g. .virtualenv was the default from virtualenvwrapper, but _now_ is Envs).

The second (more significant) benefit:  your setup code (at least snippets) will prove more portable, more easily adapted / modified to other sub-projects as they spring up for several reasons: [1] one (as opposed to many) thing to change (e.g. PROJECT_NAME), and [2] the entire idiom of get something from a variable encourages coding so as to "not make assumptions" [e.g. "what is the "name"?",   "what are the parameters it needs?", etc.].

Of course, all that needs be weighed against obfuscation:  clearer (simpler) is better.   In the case of PROJECT_NAME, if _I_ were starting from scratch, that would be a wash for me (could go either way);  PROJECT_HOME is more concrete in motivation.   Anyway, that's how _I_ think about it.  YMMV.