The distribution packages are often carefully tuned to match compatible versions, with pip, you might add something that the packaging system doesn't account for. I disliked pip ever since but the virtualenv idea sounds good.
My operating system wouldn't know about this new content, which means that it would not be automatically reproducible. There would now be a change to the system that the system doesn't know about.
I don't do that. On my system every single change to every single file is encapsulated inside of an OS package. The integrity of the OS content is not compromised in any way, because the OS knows about every single application's file. Emphasis on application's file, as opposed to just raw data.