do not try to package lsprof if not available.

This commit is contained in:
Vadim Gelfer 2006-06-23 19:20:22 -07:00
parent aaa7510117
commit fc206d2a40
2 changed files with 20 additions and 2 deletions

View File

@ -4,7 +4,13 @@
# small modifications made
import sys
from _lsprof import Profiler, profiler_entry, profiler_subentry
try:
from _lsprof import Profiler, profiler_entry, profiler_subentry
except ImportError, inst:
import packagescan
if packagescan.scan_in_progress:
raise packagescan.SkipPackage('_lsprof not available')
raise
__all__ = ['profile', 'Stats']

View File

@ -60,8 +60,16 @@ def demandload(scope, modules):
if type(scope[f]) == types.ModuleType:
requiredmodules[scope[f].__name__] = 1
class SkipPackage(Exception):
def __init__(self, reason):
self.reason = reason
scan_in_progress = False
def scan(libpath,packagename):
""" helper for finding all required modules of package <packagename> """
global scan_in_progress
scan_in_progress = True
# Use the package in the build directory
libpath = os.path.abspath(libpath)
sys.path.insert(0,libpath)
@ -85,7 +93,11 @@ def scan(libpath,packagename):
tmp = {}
mname,ext = os.path.splitext(m)
fullname = packagename+'.'+mname
__import__(fullname,tmp,tmp)
try:
__import__(fullname,tmp,tmp)
except SkipPackage, inst:
print >> sys.stderr, 'skipping %s: %s' % (fullname, inst.reason)
continue
requiredmodules[fullname] = 1
# Import all extension modules and by that run the fake demandload
for m in extmodulefiles: