Certainly! It just requires some hacks:
variables = subprocess.Popen(
["bash", "-c", "trap 'env' exit; source \"$1\" > /dev/null 2>&1",
"_", "yourscript"],
shell=False, stdout=subprocess.PIPE).communicate()[0]
This will run your unmodified script and give you all exported variables in the form foo=bar
on different lines.
On supported OS (like GNU) you can trap 'env -0' exit
to get \0
separated variables, to support multiline values.