Assertion for python scripts
matthias
matthiasblankenhaus at yahoo.com
Fri Nov 2 15:53:12 EDT 2007
On Nov 2, 12:12 pm, "Matt McCredie" <mccre... at gmail.com> wrote:
> On 11/2/07, matthias <matthiasblankenh... at yahoo.com> wrote:
>
>
>
> > Howdy !
>
> > I started using the assert() stmt and found it quite useful :-) I
> > have only one problem: I don't
> > know how to turn them off again.
>
> > I know that "-O" turns off assertions in general. However, how do I
> > pass thus parameter to
> > python to an executable script ?
>
> > I have tried the following:
>
> > 1.
> > !#/usr/bin/env python -O
>
> > -> Fails with this msg: /usr/bin/env: python -O: No such file or
> > directory
>
> > Also, putting it in quotes won't do it.
>
> > 2.
> > Passing the "-O" to the runnable script won't work either.
>
> > Here is my question: How do I maintain debug / release builds that
> > allow me to switch
> > debug stmts, like assert, on / off ?
>
> > Thanx,
> > Matthias
>
> Use:
> python -O -mcompileall path
>
> That command will compile all of the files in the given path and
> produce .pyo files. If the .pyo file is present and up-to-date it will
> be used instead of the .py file.
>
> Alternatively you could do this:
>
> python -O -mpy_compile somefile.py
>
> which can be used to compile one file at a time.
>
> Many Python programs and modules include a compile step as part of
> their installation process. There is also a -OO option, which will
> strip doc-strings as well.
>
> Matt
Thanx for your reply , Matt !
However, I think I am missing something.
Here is my example prog, assert.py, with the executable bit set:
#!/usr/bin/env python
assert 1 > 1, "ASSERTTION !"
Running this:
# python ./assert.py
Traceback (most recent call last):
File "assert.py", line 3, in ?
assert 1 > 1, "ASSERTTION !"
AssertionError: ASSERTTION !
leads to the expected result.
Now I do this as you've recommended:
# python -O -mpy_compile assert.py
This indeed creates a file with the name assert.pyo. That must be the
optimized one.
Now I try this:
# ./assert.py
Traceback (most recent call last):
File "./assert.py", line 3, in ?
assert 1 > 1, "ASSERTTION !"
AssertionError: ASSERTTION !
Ok, so it still uses the unoptimized version.
Now I try this:
# chmod 755 assert.pyo
# ./assert.pyo
bash: ./assert.pyo: cannot execute binary file
Here is my problem: I want to have an optimized executable version of
assert.py.
I am assuming that I am thinking in an unconventional way wrt Python.
If so, then
how do you start your optimized python scripts ?
Thanx,
Matthias
More information about the Python-list
mailing list