Hello Alex,
From your description, you’ve decided not to version your requirements.txt in Python. This is not a crazy approach but there are alternatives. I’m assuming you’re using App Engine Flex. I was able to find a document
here that describes that you do not need to specify a version but indicates why it would work in some cases. The following information that I found highly suggests using a virtual environment in Python.
It reads:
Specifying a version is not a requirement though it does help a lot in the future. Some versions of packages will not work well with other packages and their respective versions. It is hard to predict how changes in the future will affect these interrelationships. This is why it is very beneficial to create a snapshot in time (in your requirements.txt) showing which version interrelationships do work.
There is an approach for best practices in this thread regarding your concern of breaking change in a package update and explains virtual environments:
it's a good idea to get into the habit of using virtual environments to avoid dependency issues, especially when developing your own stuff. Anaconda offers a simple solution with the conda create command, and virtualenv works great with virtualenvwrapper for a lighter-weight solution. Another solution, pipenv, is quite popular.
There is further explanation:
A tip - you should aim to be using a virtual environment for each individual project that you'll be working on. This creates a 'bubble' for you to work within and to install specific package versions in, without it affecting your other projects. It will save you a lot of headaches in the future as your packages and versions will be kept project specific.
There is a way in this
thread on how to check if the packages in your requirements.txt are up to date. You may choose to act on them as described.
$ pip list --outdated
You have described how you are working with three projects to implement your non-versioning scenario on Google Cloud Platform but I am unclear about your question. Can you tell me more about how you are validating the application and building to production so I may research?