OK, so apparently the only source of pernicious "\" is the os.path.join, when used to read files from the ZIP. Then the best solution is probably not using os.path.join, but simply adding a hard-coded "/" when needed. I've done this in a few places. For the actual prince run, even though it seems it's not needed, I've replaced "/" with the OS-specific path separator, just to be "cleaner".
Please try this and tell me how it works.