I'd like to set the optimize flag (python -O myscript.py
) at runtime within a python script based on a command line argument to the script like myscript.py --optimize
or myscript --no-debug
. I'd like to skip assert
statements without iffing all of them away. Or is there a better way to efficiently ignore sections of python code. Are there python equivalents for #if
and #ifdef
in C++?
Is it possible to set the python -O (optimize) flag within a script?
Asked Answered
-O
is a compiler flag, you can't set it at runtime because the script already has been compiled by then.
Python has nothing comparable to compiler macros like #if
.
Simply write a start_my_project.sh
script that sets these flags.
#!/usr/bin/env python
def main():
assert 0
print("tada")
if __name__=="__main__":
import os, sys
if '--optimize' in sys.argv:
sys.argv.remove('--optimize')
os.execl(sys.executable, sys.executable, '-O', *sys.argv)
else:
main()
@Duncan: I've fixed the arguments. –
Elisabetta
Great work-around! I never want to run without '-OO', so I made it into
if __debug__: os.execl(sys.executable, sys.executable, '-OO', *sys.argv)
instead –
Fiddlewood © 2022 - 2024 — McMap. All rights reserved.
os.execl()
. The second argument isarg0
notarg1
. Try usingos.execl(sys.executable, sys.executable, '-O', *sys.argv)
or in fact pretty much any other string for the second argument and it should work as you expect. – Cominform