AttributeError: 'module' object has no attribute 'fork'
Rustom Mody
rustompmody at gmail.com
Fri Aug 8 01:35:30 EDT 2014
On Friday, August 8, 2014 10:49:27 AM UTC+5:30, Rustom Mody wrote:
> On Thursday, August 7, 2014 10:26:56 PM UTC+5:30, Steven D'Aprano wrote:
> > Roy Smith wrote:
> > > Peter Otten wrote:
> > >> os.fork()
> > >> Fork a child process.
> > >> ...
> > >> Availability: Unix.
> > >> """
> > >> You are using the wrong operating system ;)
> > > To be honest, this could be considered a buglet in the os module. It
> > > really should raise:
> > > NotImplementedError("fork() is only available on unix")
> > > or perhaps even, as Peter suggests:
> > > NotImplementedError("You are using the wrong operating system")
> > > either of those would be better than AttributeError.
> > I disagree. How would you tell if fork is implemented? With the current
> > behaviour, telling whether fork is implemented or not is simple:
> > is_implemented = hasattr(os, "fork")
> > With your suggestion:
> > try:
> > pid = os.fork()
> > except NotImplementedError:
> > is_implemented = False
> > else:
> > if pid == 0:
> > # In the child process.
> > os._exit(0) # Unconditionally exit, right now, no excuses.
> > is_implemented = True
> > which is not obvious, simple or cheap.
> Surely I am missing something but why not check os.fork before
> checking os.fork() ?
> Something along these lines
> >>> try:
> ... os.fork
> ... except AttributeError:
> ... ii = False
> ... else:
> ... ii = True
> Of course more appropriate would be something along the lines:
> catch AttributeError and re-raise NotImplementedError
Thinking about this a bit more I see that NotImplemented is under RuntimeError.
Probably a subclass of AttributeError -- PortabilityError?? Cant think of a
good name -- is what is desired
More information about the Python-list
mailing list