Reloading python modules/environment mid-play

I currently have an interesting scenario that I wonder if anyone has found the solution for.
We are running ansible on RHEL7 managing Windows boxes which unfortunately means we hit a couple of issues around pyOpenSSL versions.
We have one master playbook that imports all the other ones to run them in order.
The first playbook configures the localhost box ready for managing windows hosts and as part of this uninstall the old 0.13.x pyOpenSSL library and updates it to be the latest we have available that works.
We then do some chmodding to ensure permissions are correct as we’ve also seen in our circumstance that the “unable to find module xyz” errors were caused by ansible not having permission to access them.

At the end of this playbook execution we will still get an error that winrm is not installed.
However if I am then to re-run the master playbook and comment out the setup playbook (so that nothing changes) it will then work fine.
It seems re-running ansible causes it to detect? the new modules that we install and then is fine to use them.
The current solution we are running with is Jenkins runs the setup playbook on its own and then runs the master playbook after for everything else.

Is there a way to force ansible to effectively redetect its environment mid-run so we don’t need to split it into two ansible calls?

Cheers