include a bin/run-python wrapper script in your project, and have that set environment variables and call the .venv/bin/python binary. done.
yes, i realise in replying to this comment i'm admitting that i'm part of the problem exactly described, but the "activate" script has caused more confusion in the long run than is worthwhile and the "running from a .venv/" directory could have been a much smaller problem instead of the wind-tunnel it has become.