When trying to compile the files in the standard library, I
hit a problem compiling (using compiler.compileFile)
the "csv.py" module. The following is the backtrace:
>>> compileFile("Lib\\csv.py")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "C:\Apps\Python\lib\compiler\pycodegen.py", line
42, in compileFile
mod.compile(display)
File "C:\Apps\Python\lib\compiler\pycodegen.py", line
112, in compile
gen = ModuleCodeGenerator(tree)
File "C:\Apps\Python\lib\compiler\pycodegen.py", line
1149, in __init__
walk(tree, self)
File "C:\Apps\Python\lib\compiler\visitor.py", line 106,
in walk
walker.preorder(tree, visitor)
File "C:\Apps\Python\lib\compiler\visitor.py", line 63, in
preorder
self.dispatch(tree, *args) # XXX *args make sense?
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\pycodegen.py", line
342, in visitModule
self.scopes = self.parseSymbols(node)
File "C:\Apps\Python\lib\compiler\pycodegen.py", line
255, in parseSymbols
walk(tree, s)
File "C:\Apps\Python\lib\compiler\visitor.py", line 106,
in walk
walker.preorder(tree, visitor)
File "C:\Apps\Python\lib\compiler\visitor.py", line 63, in
preorder
self.dispatch(tree, *args) # XXX *args make sense?
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\symbols.py", line 207,
in visitModule
self.visit(node.node, scope)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\symbols.py", line 258,
in visitClass
self.visit(node.code, scope)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\symbols.py", line 220,
in visitFunction
self.visit(node.code, scope)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\symbols.py", line 279,
in visitFor
self.visit(node.body, scope)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\symbols.py", line 354,
in visitIf
self.visit(body, scope)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\symbols.py", line 315,
in visitAssign
self.visit(node.expr, scope)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\symbols.py", line 324,
in visitSubscript
self.visit(node.expr, scope, 0)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 40, in
default
self.dispatch(child, *args)
File "C:\Apps\Python\lib\compiler\visitor.py", line 57, in
dispatch
return meth(node, *args)
TypeError: visitLambda() takes exactly 3 arguments (4
given)
The script I was using was:
import os
from os.path import join
from compiler import compileFile
for root, dirs, files in os.walk("Lib"):
for name in files:
if name.endswith(".py"):
print join(root, name)
compileFile(join(root, name))
Is there a better way of compiling all Python source in a
directory (and its subdirectories)? |