Kinook Software Forum

Kinook Software Forum (https://www.kinook.com/Forum/index.php)
-   [VBP] Third Party Tools (https://www.kinook.com/Forum/forumdisplay.php?f=3)
-   -   Problem running Python script (https://www.kinook.com/Forum/showthread.php?t=1991)

craiga 08-14-2006 11:12 AM

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:
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)

kinook 08-14-2006 04:32 PM

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


All times are GMT -5. The time now is 07:41 AM.


Copyright © 1999-2023 Kinook Software, Inc.