Thanks for your quick and helpful response. I am now getting the same behaviour as you.
The difference seems to be in the contents of the zip file. I followed a similar to process to you initially, but the notable difference was in the contents of the zip file.
I recreated the zip file, so that it only contained one folder named 'javalang' that in turn contained the .py files. This minimal zip works fine.
Before I made my earlier post, I created the zip file such that it contained not only the 'javalang' folder, but also a 'javalang-egg-info' folder and other configuration files at the root-level of the zip file. Removing all the these superfluous files seems to explain why things weren't working correctly earlier.