Had some trouble in the past with equivalent encryption/decryption across these three languages so figured I'd share my findings.
Note: I'm aware the IV you choose shouldn't be static, but for this example it saved some string manipulation code. What I've seen people do is attach the IV to the front of the encrypted string (first 16 characters), then substring when you are decryption.
Would love to hear your thoughts / comments!

Python AES decryption with CBC mode.
Decode the encrypted text
decrypted_text = base64.urlsafe_b64decode(encrypted_text)Create a decipher with same key and iv for CBC mode, "Don't forget to encode your key and iv"
decipher = AES.new(bytes(key, encoding='utf-8'), AES.MODE_CBC, bytes(iv, encoding='utf-8'))Decrypt the decrypted_text
decrypted_bytes = decipher.decrypt(decrypted_text)Decode them to get the plain with pad
decrypted_text = decrypted_bytes.decode('utf-8')