I worked on python for couple of years more than a decade ago. I wouldn't say I am a python lover for various reasons. But no doubt python has a great ecosystem and it's just can not avoid it especially in this AI era... Most of my work is done with C++ for lower layer and Bash script for high level scripting. The workflow I have been using always try to eliminate external dependence as much as we can. This is because we see external dependence as a potential risk. We even has maintain our own Linux mirror site. We have C++ compiler download and installed in company net drive. All the third part C++ libraries are build and saved to net drive as well. All these installations can be shared among different projects. Since it's inevitable to use python, we want to have the similar level of control on python work flow as well. Following requirements are preferred for the work flow design: only Linux platform is under consideration support multiple python versions without them to interfere each other (similar, my C++ project can choose between different compiler tool chains) additional python libraries can be shared between different python version and projects; (projects + libraries + python forms a combination with each element replaceable) host system should be clean without python/library installation contamination What I have done so far is: Install pyenv released version to my net drive. Use envrionment-module files to load/unload specific pyenv version Use pyenv to install python I consider environment-module as part of my host system and let it to introduce pyenv, which further introduce python interpreter. As to python libraries, I plan to use python -m venv \netdrive\pylibs\.venv. And plan to share the same .venv between different projects. Well it seems .venv is designed to be used per project not the organization. In C++, I can play with makefile to easily switch between different versions of C++ library (boost, poco etc.) living in the net drive with different version under different directories. If I use .venv to add python libraries per project, first of all, after another team member git clone the project, does he need to re-download all the libraries (obviously we don't want to push python library into our git repo)? Secondly, in order to switch between library versions, do I have to download new version and eliminate old one? It seems to me there are more human factor involved in pyenv+venv work flow than my C++ work flow. In short, how do I achieve the same level of dependence less and flexibility of my C++ work flow? Just to repeat, in my C++ work flow, I can control the project + compiler + library combination just by a makefile + organization net drive. Continue reading...