File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'handlers'
import logging.handlers logging.handlers.RotatingFileHandler <class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
import os os.path.join <function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a un *module* os.py, qui exporte explicitement un symbole path. Par contre, logging est bien un *package* et - à moins qu'ils n'automatisent des choses via le __init__.py, il faut explicitement importer les sous- modules.
Voilà.
Bonne fin de vendredi à tous :)
Itou.
-- Laurent POINTAL -
Le Fri, 13 Jun 2008 16:09:38 +0100, Alex Marandon a écrit :
Bonjour,
Voici quelque chose qui m'a fait perdre quelques minutes :
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'handlers'
import logging.handlers
logging.handlers.RotatingFileHandler
<class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
import os
os.path.join
<function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le
sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a un
*module* os.py, qui exporte explicitement un symbole path. Par contre,
logging est bien un *package* et - à moins qu'ils n'automatisent des
choses via le __init__.py, il faut explicitement importer les sous-
modules.
File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'handlers'
import logging.handlers logging.handlers.RotatingFileHandler <class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
import os os.path.join <function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a un *module* os.py, qui exporte explicitement un symbole path. Par contre, logging est bien un *package* et - à moins qu'ils n'automatisent des choses via le __init__.py, il faut explicitement importer les sous- modules.
File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'handlers'
import logging.handlers logging.handlers.RotatingFileHandler <class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
import os os.path.join <function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a un *module* os.py, qui exporte explicitement un symbole path. Par contre, logging est bien un *package* et - à moins qu'ils n'automatisent des choses via le __init__.py, il faut explicitement importer les sous- modules.
D'accord, je comprends. Y a-t-il alors une imprécision au début de http://docs.python.org/lib/module-logging.html ? Je cite :
""" 14.5 logging -- Logging facility for Python
New in version 2.3. This module defines functions and classes which implement a flexible error logging system for applications. """
Plus loin dans cette page, logging est effectivement décrit comme étant un package.
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'handlers'
import logging.handlers
logging.handlers.RotatingFileHandler
<class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
import os
os.path.join
<function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le
sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a un
*module* os.py, qui exporte explicitement un symbole path. Par contre,
logging est bien un *package* et - à moins qu'ils n'automatisent des
choses via le __init__.py, il faut explicitement importer les sous-
modules.
D'accord, je comprends. Y a-t-il alors une imprécision au début de
http://docs.python.org/lib/module-logging.html ? Je cite :
"""
14.5 logging -- Logging facility for Python
New in version 2.3. This module defines functions and classes which
implement a flexible error logging system for applications.
"""
Plus loin dans cette page, logging est effectivement décrit comme étant
un package.
File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'handlers'
import logging.handlers logging.handlers.RotatingFileHandler <class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
import os os.path.join <function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a un *module* os.py, qui exporte explicitement un symbole path. Par contre, logging est bien un *package* et - à moins qu'ils n'automatisent des choses via le __init__.py, il faut explicitement importer les sous- modules.
D'accord, je comprends. Y a-t-il alors une imprécision au début de http://docs.python.org/lib/module-logging.html ? Je cite :
""" 14.5 logging -- Logging facility for Python
New in version 2.3. This module defines functions and classes which implement a flexible error logging system for applications. """
Plus loin dans cette page, logging est effectivement décrit comme étant un package.
Laurent Pointal
Le Mon, 16 Jun 2008 10:07:48 +0100, Alex Marandon a écrit :
Laurent Pointal wrote:
Le Fri, 13 Jun 2008 16:09:38 +0100, Alex Marandon a écrit :
>>> import logging >>> logging.handlers.RotatingFileHandler Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'handlers' >>> import logging.handlers >>> logging.handlers.RotatingFileHandler <class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
>>> import os >>> os.path.join <function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a un *module* os.py, qui exporte explicitement un symbole path. Par contre, logging est bien un *package* et - à moins qu'ils n'automatisent des choses via le __init__.py, il faut explicitement importer les sous- modules.
D'accord, je comprends. Y a-t-il alors une imprécision au début de http://docs.python.org/lib/module-logging.html ? Je cite :
""" 14.5 logging -- Logging facility for Python
New in version 2.3. This module defines functions and classes which implement a flexible error logging system for applications. """
Plus loin dans cette page, logging est effectivement décrit comme étant un package.
Si dans le __init__.py d'un package, tu défini des noms, ceux-ci sont alors accessibles directement par un import du package lui-même.
-- Laurent POINTAL -
Le Mon, 16 Jun 2008 10:07:48 +0100, Alex Marandon a écrit :
Laurent Pointal wrote:
Le Fri, 13 Jun 2008 16:09:38 +0100, Alex Marandon a écrit :
>>> import logging
>>> logging.handlers.RotatingFileHandler
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'handlers'
>>> import logging.handlers
>>> logging.handlers.RotatingFileHandler
<class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
>>> import os
>>> os.path.join
<function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le
sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a
un *module* os.py, qui exporte explicitement un symbole path. Par
contre, logging est bien un *package* et - à moins qu'ils
n'automatisent des choses via le __init__.py, il faut explicitement
importer les sous- modules.
D'accord, je comprends. Y a-t-il alors une imprécision au début de
http://docs.python.org/lib/module-logging.html ? Je cite :
"""
14.5 logging -- Logging facility for Python
New in version 2.3. This module defines functions and classes which
implement a flexible error logging system for applications. """
Plus loin dans cette page, logging est effectivement décrit comme étant
un package.
Si dans le __init__.py d'un package, tu défini des noms, ceux-ci sont
alors accessibles directement par un import du package lui-même.
Le Mon, 16 Jun 2008 10:07:48 +0100, Alex Marandon a écrit :
Laurent Pointal wrote:
Le Fri, 13 Jun 2008 16:09:38 +0100, Alex Marandon a écrit :
>>> import logging >>> logging.handlers.RotatingFileHandler Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'handlers' >>> import logging.handlers >>> logging.handlers.RotatingFileHandler <class logging.handlers.RotatingFileHandler at 0x785db0>
Alors que d'habitude:
>>> import os >>> os.path.join <function join at 0x3f770>
Pourquoi dans le premier cas est-on obligé d'importer explicitement le sous module et pas dans le second ?
Si tu regardes dans les modules standards Python, tu verras qu'il y a un *module* os.py, qui exporte explicitement un symbole path. Par contre, logging est bien un *package* et - à moins qu'ils n'automatisent des choses via le __init__.py, il faut explicitement importer les sous- modules.
D'accord, je comprends. Y a-t-il alors une imprécision au début de http://docs.python.org/lib/module-logging.html ? Je cite :
""" 14.5 logging -- Logging facility for Python
New in version 2.3. This module defines functions and classes which implement a flexible error logging system for applications. """
Plus loin dans cette page, logging est effectivement décrit comme étant un package.
Si dans le __init__.py d'un package, tu défini des noms, ceux-ci sont alors accessibles directement par un import du package lui-même.