Public bug reported: Binary package hint: python2.5
I was investigating why a task which spawned many very simple Python scripts was taking a substantially time running on my Feisty installation than on my Dapper installation, and I ran across the installation of the "apport" hook. The functionality there is very cool, and I appreciate it, but I removed it and saw these modules imported with python -v: $ python -v # installing zipimport hook import zipimport # builtin # installed zipimport hook # /usr/lib/python2.5/site.pyc has bad mtime import site # from /usr/lib/python2.5/site.py # can't create /usr/lib/python2.5/site.pyc # /usr/lib/python2.5/os.pyc matches /usr/lib/python2.5/os.py import os # precompiled from /usr/lib/python2.5/os.pyc import posix # builtin # /usr/lib/python2.5/posixpath.pyc matches /usr/lib/python2.5/posixpath.py import posixpath # precompiled from /usr/lib/python2.5/posixpath.pyc # /usr/lib/python2.5/stat.pyc matches /usr/lib/python2.5/stat.py import stat # precompiled from /usr/lib/python2.5/stat.pyc # /usr/lib/python2.5/UserDict.pyc matches /usr/lib/python2.5/UserDict.py import UserDict # precompiled from /usr/lib/python2.5/UserDict.pyc # /usr/lib/python2.5/copy_reg.pyc matches /usr/lib/python2.5/copy_reg.py import copy_reg # precompiled from /usr/lib/python2.5/copy_reg.pyc # /usr/lib/python2.5/types.pyc matches /usr/lib/python2.5/types.py import types # precompiled from /usr/lib/python2.5/types.pyc import _types # builtin # /usr/lib/python2.5/warnings.pyc matches /usr/lib/python2.5/warnings.py import warnings # precompiled from /usr/lib/python2.5/warnings.pyc # /usr/lib/python2.5/linecache.pyc matches /usr/lib/python2.5/linecache.py import linecache # precompiled from /usr/lib/python2.5/linecache.pyc import encodings # directory /usr/lib/python2.5/encodings # /usr/lib/python2.5/encodings/__init__.pyc matches /usr/lib/python2.5/encodings/__init__.py import encodings # precompiled from /usr/lib/python2.5/encodings/__init__.pyc # /usr/lib/python2.5/codecs.pyc matches /usr/lib/python2.5/codecs.py import codecs # precompiled from /usr/lib/python2.5/codecs.pyc import _codecs # builtin # /usr/lib/python2.5/encodings/aliases.pyc matches /usr/lib/python2.5/encodings/aliases.py import encodings.aliases # precompiled from /usr/lib/python2.5/encodings/aliases.pyc # /usr/lib/python2.5/encodings/utf_8.pyc matches /usr/lib/python2.5/encodings/utf_8.py import encodings.utf_8 # precompiled from /usr/lib/python2.5/encodings/utf_8.pyc Python 2.5.1c1 (release25-maint, Apr 6 2007, 22:02:36) [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. dlopen("/usr/lib/python2.5/lib-dynload/readline.so", 2); import readline # dynamically loaded from /usr/lib/python2.5/lib-dynload/readline.so Then, I typed this line: >>> import apport and saw the following modules imported: import apport # directory /var/lib/python-support/python2.5/apport # /var/lib/python-support/python2.5/apport/__init__.pyc matches /var/lib/python-support/python2.5/apport/__init__.py import apport # precompiled from /var/lib/python-support/python2.5/apport/__init__.pyc # /var/lib/python-support/python2.5/apport/report.pyc matches /var/lib/python-support/python2.5/apport/report.py import apport.report # precompiled from /var/lib/python-support/python2.5/apport/report.pyc # /usr/lib/python2.5/subprocess.pyc matches /usr/lib/python2.5/subprocess.py import subprocess # precompiled from /usr/lib/python2.5/subprocess.pyc # /usr/lib/python2.5/traceback.pyc matches /usr/lib/python2.5/traceback.py import traceback # precompiled from /usr/lib/python2.5/traceback.pyc dlopen("/usr/lib/python2.5/lib-dynload/select.so", 2); import select # dynamically loaded from /usr/lib/python2.5/lib-dynload/select.so import errno # builtin dlopen("/usr/lib/python2.5/lib-dynload/fcntl.so", 2); import fcntl # dynamically loaded from /usr/lib/python2.5/lib-dynload/fcntl.so # /usr/lib/python2.5/pickle.pyc matches /usr/lib/python2.5/pickle.py import pickle # precompiled from /usr/lib/python2.5/pickle.pyc import marshal # builtin # /usr/lib/python2.5/struct.pyc matches /usr/lib/python2.5/struct.py import struct # precompiled from /usr/lib/python2.5/struct.pyc dlopen("/usr/lib/python2.5/lib-dynload/_struct.so", 2); import _struct # dynamically loaded from /usr/lib/python2.5/lib-dynload/_struct.so # /usr/lib/python2.5/re.pyc matches /usr/lib/python2.5/re.py import re # precompiled from /usr/lib/python2.5/re.pyc # /usr/lib/python2.5/sre_compile.pyc matches /usr/lib/python2.5/sre_compile.py import sre_compile # precompiled from /usr/lib/python2.5/sre_compile.pyc import _sre # builtin # /usr/lib/python2.5/sre_constants.pyc matches /usr/lib/python2.5/sre_constants.py import sre_constants # precompiled from /usr/lib/python2.5/sre_constants.pyc # /usr/lib/python2.5/sre_parse.pyc matches /usr/lib/python2.5/sre_parse.py import sre_parse # precompiled from /usr/lib/python2.5/sre_parse.pyc dlopen("/usr/lib/python2.5/lib-dynload/binascii.so", 2); import binascii # dynamically loaded from /usr/lib/python2.5/lib-dynload/binascii.so dlopen("/usr/lib/python2.5/lib-dynload/cStringIO.so", 2); import cStringIO # dynamically loaded from /usr/lib/python2.5/lib-dynload/cStringIO.so # /usr/lib/python2.5/tempfile.pyc matches /usr/lib/python2.5/tempfile.py import tempfile # precompiled from /usr/lib/python2.5/tempfile.pyc # /usr/lib/python2.5/random.pyc matches /usr/lib/python2.5/random.py import random # precompiled from /usr/lib/python2.5/random.pyc dlopen("/usr/lib/python2.5/lib-dynload/math.so", 2); import math # dynamically loaded from /usr/lib/python2.5/lib-dynload/math.so dlopen("/usr/lib/python2.5/lib-dynload/_random.so", 2); import _random # dynamically loaded from /usr/lib/python2.5/lib-dynload/_random.so import thread # builtin # /usr/lib/python2.5/urllib.pyc matches /usr/lib/python2.5/urllib.py import urllib # precompiled from /usr/lib/python2.5/urllib.pyc # /usr/lib/python2.5/string.pyc matches /usr/lib/python2.5/string.py import string # precompiled from /usr/lib/python2.5/string.pyc dlopen("/usr/lib/python2.5/lib-dynload/strop.so", 2); import strop # dynamically loaded from /usr/lib/python2.5/lib-dynload/strop.so # /usr/lib/python2.5/socket.pyc matches /usr/lib/python2.5/socket.py import socket # precompiled from /usr/lib/python2.5/socket.pyc dlopen("/usr/lib/python2.5/lib-dynload/_socket.so", 2); import _socket # dynamically loaded from /usr/lib/python2.5/lib-dynload/_socket.so dlopen("/usr/lib/python2.5/lib-dynload/_ssl.so", 2); import _ssl # dynamically loaded from /usr/lib/python2.5/lib-dynload/_ssl.so dlopen("/usr/lib/python2.5/lib-dynload/time.so", 2); import time # dynamically loaded from /usr/lib/python2.5/lib-dynload/time.so # /usr/lib/python2.5/urlparse.pyc matches /usr/lib/python2.5/urlparse.py import urlparse # precompiled from /usr/lib/python2.5/urlparse.pyc import pwd # builtin dlopen("/usr/lib/python2.5/lib-dynload/grp.so", 2); import grp # dynamically loaded from /usr/lib/python2.5/lib-dynload/grp.so import ctypes # directory /usr/lib/python2.5/ctypes # /usr/lib/python2.5/ctypes/__init__.pyc matches /usr/lib/python2.5/ctypes/__init__.py import ctypes # precompiled from /usr/lib/python2.5/ctypes/__init__.pyc dlopen("/usr/lib/python2.5/lib-dynload/_ctypes.so", 2); import _ctypes # dynamically loaded from /usr/lib/python2.5/lib-dynload/_ctypes.so # /usr/lib/python2.5/ctypes/_endian.pyc matches /usr/lib/python2.5/ctypes/_endian.py import ctypes._endian # precompiled from /usr/lib/python2.5/ctypes/_endian.pyc # /usr/lib/python2.5/ctypes/util.pyc matches /usr/lib/python2.5/ctypes/util.py import ctypes.util # precompiled from /usr/lib/python2.5/ctypes/util.pyc # /usr/lib/python2.5/fnmatch.pyc matches /usr/lib/python2.5/fnmatch.py import fnmatch # precompiled from /usr/lib/python2.5/fnmatch.pyc import xml # directory /usr/lib/python2.5/xml # /usr/lib/python2.5/xml/__init__.pyc matches /usr/lib/python2.5/xml/__init__.py import xml # precompiled from /usr/lib/python2.5/xml/__init__.pyc import _xmlplus # directory /usr/lib/python2.5/site-packages/_xmlplus # /usr/lib/python2.5/site-packages/_xmlplus/__init__.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/__init__.py import _xmlplus # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/__init__.pyc import xml.dom # directory /usr/lib/python2.5/site-packages/_xmlplus/dom # /usr/lib/python2.5/site-packages/_xmlplus/dom/__init__.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/__init__.py import xml.dom # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/__init__.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/DOMImplementation.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/DOMImplementation.py import xml.dom.DOMImplementation # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/DOMImplementation.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/Range.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/Range.py import xml.dom.Range # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/Range.pyc import xml.dom.html # directory /usr/lib/python2.5/site-packages/_xmlplus/dom/html # /usr/lib/python2.5/site-packages/_xmlplus/dom/html/__init__.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/html/__init__.py import xml.dom.html # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/html/__init__.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/html/HTMLDOMImplementation.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/html/HTMLDOMImplementation.py import xml.dom.html.HTMLDOMImplementation # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/html/HTMLDOMImplementation.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/MessageSource.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/MessageSource.py import xml.dom.MessageSource # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/MessageSource.pyc # /usr/lib/python2.5/site-packages/_xmlplus/FtCore.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/FtCore.py import xml.FtCore # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/FtCore.pyc # /usr/lib/python2.5/gettext.pyc matches /usr/lib/python2.5/gettext.py import gettext # precompiled from /usr/lib/python2.5/gettext.pyc # /usr/lib/python2.5/locale.pyc matches /usr/lib/python2.5/locale.py import locale # precompiled from /usr/lib/python2.5/locale.pyc dlopen("/usr/lib/python2.5/lib-dynload/_locale.so", 2); import _locale # dynamically loaded from /usr/lib/python2.5/lib-dynload/_locale.so dlopen("/usr/lib/python2.5/lib-dynload/operator.so", 2); import operator # dynamically loaded from /usr/lib/python2.5/lib-dynload/operator.so # /usr/lib/python2.5/copy.pyc matches /usr/lib/python2.5/copy.py import copy # precompiled from /usr/lib/python2.5/copy.pyc # /usr/lib/python2.5/encodings/latin_1.pyc matches /usr/lib/python2.5/encodings/latin_1.py import encodings.latin_1 # precompiled from /usr/lib/python2.5/encodings/latin_1.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/domreg.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/domreg.py import xml.dom.domreg # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/domreg.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/minicompat.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/minicompat.py import xml.dom.minicompat # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/minicompat.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/minidom.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/minidom.py import xml.dom.minidom # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/minidom.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/xmlbuilder.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/xmlbuilder.py import xml.dom.xmlbuilder # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/xmlbuilder.pyc # /usr/lib/python2.5/site-packages/_xmlplus/dom/NodeFilter.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/dom/NodeFilter.py import xml.dom.NodeFilter # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/dom/NodeFilter.pyc import xml.parsers # directory /usr/lib/python2.5/site-packages/_xmlplus/parsers # /usr/lib/python2.5/site-packages/_xmlplus/parsers/__init__.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/parsers/__init__.py import xml.parsers # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/parsers/__init__.pyc # /usr/lib/python2.5/site-packages/_xmlplus/parsers/expat.pyc matches /usr/lib/python2.5/site-packages/_xmlplus/parsers/expat.py import xml.parsers.expat # precompiled from /usr/lib/python2.5/site-packages/_xmlplus/parsers/expat.pyc dlopen("/usr/lib/python2.5/site-packages/_xmlplus/parsers/pyexpat.so", 2); import xml.parsers.pyexpat # dynamically loaded from /usr/lib/python2.5/site-packages/_xmlplus/parsers/pyexpat.so # /var/lib/python-support/python2.5/problem_report.pyc matches /var/lib/python-support/python2.5/problem_report.py import problem_report # precompiled from /var/lib/python-support/python2.5/problem_report.pyc dlopen("/usr/lib/python2.5/lib-dynload/bz2.so", 2); import bz2 # dynamically loaded from /usr/lib/python2.5/lib-dynload/bz2.so dlopen("/usr/lib/python2.5/lib-dynload/zlib.so", 2); import zlib # dynamically loaded from /usr/lib/python2.5/lib-dynload/zlib.so # /usr/lib/python2.5/base64.pyc matches /usr/lib/python2.5/base64.py import base64 # precompiled from /usr/lib/python2.5/base64.pyc # /usr/lib/python2.5/gzip.pyc matches /usr/lib/python2.5/gzip.py import gzip # precompiled from /usr/lib/python2.5/gzip.pyc import email # directory /usr/lib/python2.5/email # /usr/lib/python2.5/email/__init__.pyc matches /usr/lib/python2.5/email/__init__.py import email # precompiled from /usr/lib/python2.5/email/__init__.pyc import email.mime # directory /usr/lib/python2.5/email/mime # /usr/lib/python2.5/email/mime/__init__.pyc matches /usr/lib/python2.5/email/mime/__init__.py import email.mime # precompiled from /usr/lib/python2.5/email/mime/__init__.pyc # /usr/lib/python2.5/email/mime/multipart.pyc matches /usr/lib/python2.5/email/mime/multipart.py import email.mime.multipart # precompiled from /usr/lib/python2.5/email/mime/multipart.pyc # /usr/lib/python2.5/email/mime/base.pyc matches /usr/lib/python2.5/email/mime/base.py import email.mime.base # precompiled from /usr/lib/python2.5/email/mime/base.pyc # /usr/lib/python2.5/email/message.pyc matches /usr/lib/python2.5/email/message.py import email.message # precompiled from /usr/lib/python2.5/email/message.pyc # /usr/lib/python2.5/uu.pyc matches /usr/lib/python2.5/uu.py import uu # precompiled from /usr/lib/python2.5/uu.pyc # /usr/lib/python2.5/email/charset.pyc matches /usr/lib/python2.5/email/charset.py import email.charset # precompiled from /usr/lib/python2.5/email/charset.pyc # /usr/lib/python2.5/email/base64mime.pyc matches /usr/lib/python2.5/email/base64mime.py import email.base64mime # precompiled from /usr/lib/python2.5/email/base64mime.pyc # /usr/lib/python2.5/email/utils.pyc matches /usr/lib/python2.5/email/utils.py import email.utils # precompiled from /usr/lib/python2.5/email/utils.pyc # /usr/lib/python2.5/email/_parseaddr.pyc matches /usr/lib/python2.5/email/_parseaddr.py import email._parseaddr # precompiled from /usr/lib/python2.5/email/_parseaddr.pyc # /usr/lib/python2.5/quopri.pyc matches /usr/lib/python2.5/quopri.py import quopri # precompiled from /usr/lib/python2.5/quopri.pyc # /usr/lib/python2.5/email/encoders.pyc matches /usr/lib/python2.5/email/encoders.py import email.encoders # precompiled from /usr/lib/python2.5/email/encoders.pyc # /usr/lib/python2.5/email/quoprimime.pyc matches /usr/lib/python2.5/email/quoprimime.py import email.quoprimime # precompiled from /usr/lib/python2.5/email/quoprimime.pyc # /usr/lib/python2.5/email/errors.pyc matches /usr/lib/python2.5/email/errors.py import email.errors # precompiled from /usr/lib/python2.5/email/errors.pyc # /usr/lib/python2.5/email/iterators.pyc matches /usr/lib/python2.5/email/iterators.py import email.iterators # precompiled from /usr/lib/python2.5/email/iterators.pyc # /usr/lib/python2.5/email/mime/text.pyc matches /usr/lib/python2.5/email/mime/text.py import email.mime.text # precompiled from /usr/lib/python2.5/email/mime/text.pyc # /usr/lib/python2.5/email/mime/nonmultipart.pyc matches /usr/lib/python2.5/email/mime/nonmultipart.py import email.mime.nonmultipart # precompiled from /usr/lib/python2.5/email/mime/nonmultipart.pyc # /usr/lib/python2.5/unittest.pyc matches /usr/lib/python2.5/unittest.py import unittest # precompiled from /usr/lib/python2.5/unittest.pyc # /var/lib/python-support/python2.5/apport/fileutils.pyc matches /var/lib/python-support/python2.5/apport/fileutils.py import apport.fileutils # precompiled from /var/lib/python-support/python2.5/apport/fileutils.pyc # /usr/lib/python2.5/glob.pyc matches /usr/lib/python2.5/glob.py import glob # precompiled from /usr/lib/python2.5/glob.pyc # /var/lib/python-support/python2.5/apport/packaging_impl.pyc matches /var/lib/python-support/python2.5/apport/packaging_impl.py import apport.packaging_impl # precompiled from /var/lib/python-support/python2.5/apport/packaging_impl.pyc # /usr/lib/python2.5/shutil.pyc matches /usr/lib/python2.5/shutil.py import shutil # precompiled from /usr/lib/python2.5/shutil.pyc >>> This is a substantial and unnecessary overhead for a hook which will be invoked only if the process exits with an error. While quite a few Python programs import a huge number of modules, some are tuned to be as conservative as possible about importing for performance reasons; that should be respected by the system installation. The functionality need not be lost, since sys.excepthook should instead be set to a one-line function which, if apport were not yet imported, imported it. ** Affects: python2.5 (Ubuntu) Importance: Undecided Status: Unconfirmed -- apport exception hook negatively impacts startup of python https://bugs.launchpad.net/bugs/105764 You received this bug notification because you are a member of Ubuntu Bugs, which is the bug contact for Ubuntu. -- ubuntu-bugs mailing list [EMAIL PROTECTED] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs