This question has been put on hold at the GIS Stack Exchange for being off-topic. So I thought I'd try StackOverflow instead.
I have been using Python for a little while and have bought into the idea that virtual environments are a good thing because they prevent future updates of packages breaking your precious code that has taken eons to develop. I have just spent a good few days trying to get cartopy working in a Python 3.6 virtual environment on a Mac using fink-installed libraries for gdal, geos and proj4 (see Python 3.4 crashes when producing some – but not all – Cartopy maps with segmentation fault 11). However, it seems that, even in the virtual environment, the code still relies on those external libraries. This would seem to defeat the object of using virtual environments because, if the external libraries are updated, it runs the risk of breaking any GIS code developed in the virtual environment, even if the Python packages in the virtual environment remain unchanged. The only time I've come across this situation is in relation to GIS-related packages (but, clearly, it may occur in other spheres as well).
Is it possible to create a Python virtual environment for GIS that may be built initially using external libraries and software but is then self-contained and is unaffected when external libraries and frameworks are changed or updated?