[Tutor] when is "pythondontwritebytecode" useful?
Ben Finney
ben+python at benfinney.id.au
Mon Feb 17 21:30:58 CET 2014
Albert-Jan Roskam <fomcl at yahoo.com> writes:
> I know what it does
> (http://docs.python.org/2/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE),
> i.e. no pyc or pyo fiules are written, but WHY is that sometimes a
> good thing?
There are numerous reasons why one might not want files to suddenly be
written when a source file gets compiled.
> The only useful scenario I can think of is when you don't have write
> rights to create pyc files but you want to use a package anyway.
Another reason: The file is named such that adding the letter “c” at the
end is unhelpful.
When writing a program to be invoked by a command name, on Unix the
convention is to name the program file with the name of the command. So
the command “foo” is implemented in a file named ‘foo’, no suffix.
This program file needs unit tests, and the test runner will import that
file. At which point Python will compile it, and normally create a
bytecode file. The bytecode file will be named by appending “c” to the
name of the source file, resulting in the filename ‘fooc’.
That filename makes no sense, so I want to disable the writing of that
bytecode file when that source file is imported.
That is just one example, of the more general case that one doesn't want
a file arbitrarily appearing in a directory with properties partially
outside one's control. Can you think of others?
--
\ “Buy not what you want, but what you need; what you do not need |
`\ is expensive at a penny.” —Cato, 234–149 BCE, Relique |
_o__) |
Ben Finney
More information about the Tutor
mailing list