I basically agree with this. This is why, at the end of the post, I recommend Python in a Ubuntu environment, where the "build process" is a single step (`python my_program.py`), and packages can generally be managed with `apt`, which is a standard tool representative of a large class of tools, which are likely to be used at some point by a large fraction of CS students.
Yes, virtualenv. A few years ago, I said that "version pinning" was not going to end well, because it would reduce the pressure on library developers to maintain backwards compatibility. Now something equivalent to version pinning is everywhere. Moving forward is tough when, three levels down, some package wants an obsolete version of some other package.