#1
|
|||
|
|||
Problem running Python script
I am trying to run a Python script and I am getting a couple different errors.
First I just try a simple 2-line script: import marshal, os, re, sys, time print "test" I get this error: 8/14/2006 10:45:37 AM: --------------------Starting Build: test.bld'-------------------- 8/14/2006 10:45:37 AM: Building project step 'Run Python script'... Failed to instantiate script engine 'Python': Invalid class string 8/14/2006 10:45:37 AM: Step 'Run Python script' failed 8/14/2006 10:45:37 AM: Build ended. When I run a more substantial script (pasted in below) I get this error, which I assume has to do with the brackets. I tried doubling up the brackets for accessing the Python dictionary object but then I get the "invalid class string" error. 8/14/2006 10:40:03 AM: --------------------Starting Build: 'Test.bld'-------------------- 8/14/2006 10:40:03 AM: Building project step 'Check for opened P4 files under '... Error expanding macros or script in property Script: <Error parsing macros: Unrecoverable Parse Error at position 373 - expecting macro_name> 8/14/2006 10:40:03 AM: Build ended. By the way giving the character position of the parse error is not very helpful, since the script editor does not display the character position, only the row and column of the cursor. Below is the script that gets the Unrecoverable Parse error. If I double up the brackets, then I get the first error ("Failed to instantiate script engine 'Python': Invalid class string"). Both these scripts run fine when run directly from Python. import marshal, os, re, sys, time p4changes = 'p4 -G opened' stream = os.popen(p4changes, 'rb') nReturn = 0; try: while 1: dict = marshal.load(stream) if(dict["depotFile"].find("//somedepot/somefile/")): print dict["depotFile"] nReturn = 1; except EOFError: pass sys.exit(nReturn) |
#2
|
|||
|
|||
Python needs to be registered as an Active Script / Windows Script Host engine to use it from VBP scripting [1]. I believe ActivePython [2] must be used, including the 'Python for Windows Extensions' option when installing.
Also, VBP will not capture language-specific output (i.e., print) statements; you would need to use WScript.Echo or Builder.LogMessage to send output to VBP. And you do need to double up bracket characters so they will not be interpreted by VBP as a script expression [3]. Another option would be to invoke Python directly (not using Active Scripting) from a Run Program action. [1] http://www.visualbuild.com/Manual/script.htm [2] http://www.activestate.com/Products/ActivePython/ [3] http://www.visualbuild.com/Manual/scriptexpressions.htm |
|
|