Skip to Content

Unable to execute python command in SAP BODS

I tried executing a python command using ksh in SAP BODS script to run a program called "zzz.py" in the BODS server:

print(exec('ksh','-c "python --version"',8));


print(exec('ksh','-c "python zzz.py"',8));

However, upon executing the script, I got the following output:

38502990602048  PRINTFN 11/2/20174:26:17 PM    0:Python2.7.9


38502990602048  PRINTFN 11/2/20174:26:17 PM    1:Couldnot find platform independent libraries <prefix>Couldnot find platform dependent libraries <exec_prefix>


38502990602048  PRINTFN 11/2/20174:26:17 PM    Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]ImportError:No module named site

While I proceeded to add the export PYTHONHOME=/usr/bin/python, and executed the printenv command, the PYTHONHOME path is not shown.

I went ahead to use SSH to access the server via PuTTy, and executing the command works perfectly. However, when running the python --version command, it shows that my version in 2.7.5 as opposed to the one shown in BODS. I tried adding the PYTHONHOME path as well, but it did not help in the BODS (and instead i cannot run the python command in my SSH session, which of course i went to unset it and SSH session works normally now)

May I seek some help in this? THANKS!

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Best Answer
    Nov 09, 2017 at 06:20 AM

    Managed to solve this by:

    When executing from BODS, a different user is being used (as opposed to root which was being used for SSH). Had to set "export LD_LIBRARY_PATH=/usr/local/lib" before executing python and it works.

    Add comment
    10|10000 characters needed characters exceeded

  • Nov 03, 2017 at 05:18 AM

    Is your Data Services Job server installed on Linux or Windows Server?

    Never worked on executing a shell command to execute the python code. Have you tried to execute the exec() function below

    Before executing the exec() command try setting the environment variable for the BODS user profile(user who runs the job)

    export PYTHONHOME=/usr/bin/python

    Try to declare the location of the Python .py file in a substitution parameter

    [$$PythonLibPath]= /usr/bods/pythonfiles;

    /* Print the output of exec() functon*/

    print(exec('ksh','-c python [$$PythonLibPath]/zzz.py',8));

    **what is -c option used for?

    kindly follow the below links for reference

    http://www.forumtopics.com/busobj/viewtopic.php?p=1019727

    http://www.forumtopics.com/busobj/viewtopic.php?p=851717

    Regards

    Arun Sasi

    Add comment
    10|10000 characters needed characters exceeded

  • 12 hours ago

    How can we pass a parameter to a python program in EXEC function in BODS?

    When running the python code at command line with parameter its doing exactly how i intend to use but the same fails to do anything when run through BODS. Any examples on how this needs to be implemented in BODS?

    Add comment
    10|10000 characters needed characters exceeded