Building for the Splunk Platform

Python script. Module not loading when executed by splunk

ryan461
Explorer

I have a python script on our splunk server to ingest data from a database using pymssql and _mssql. I added this script through the web gui in Manager > Data Inputs > Scripts. I can run the script manually just fine. But when its executed by splunk, in the splunkd logs it says ImportError: No module named _mssql.

The pymssql/_mssql package was installed manually.

Tags (1)
1 Solution

alacercogitatus
SplunkTrust
SplunkTrust

Splunk uses it's own python to execute scripts. So if Splunk Python doesn't know about _mssql, it won't find it. Did you install _mssql to the file system? Try running manually with splunk cmd python /path/to/your/script. I got around that by using a sh script to call the python script with #!/usr/bin/python as the executable to use.

View solution in original post

asifhj
Path Finder

Guys,

Instead setting all those parameters and creating subproccess.
Simply copy your required packages/files from


/usr/local/lib/python2.7/dist-packages

to

/opt/splunk/lib/python2.7/site-packages/


David
Splunk Employee
Splunk Employee

I downvoted this post because this is not supported, and as a comment suggested, will break between upgrades (and also not be transferrable between systems)

0 Karma

alacercogitatus
SplunkTrust
SplunkTrust

Possible, but if you upgrade, you may lose the files.

0 Karma

dalglish
New Member

I just use wrapper python script with non-splunk python with installed modules in scripted input. (taken from here) Something like that:

import os, sys
for envvar in ("PYTHONPATH", "LD_LIBRARY_PATH"):
    if envvar in os.environ:
        del os.environ[envvar]
python_executable = "D:\Python27\python.exe"
real_script = "path_to_script"
os.execv(python_executable, [ python_executable, real_script ] + sys.argv[1:])
0 Karma

alacercogitatus
SplunkTrust
SplunkTrust

Splunk uses it's own python to execute scripts. So if Splunk Python doesn't know about _mssql, it won't find it. Did you install _mssql to the file system? Try running manually with splunk cmd python /path/to/your/script. I got around that by using a sh script to call the python script with #!/usr/bin/python as the executable to use.

alacercogitatus
SplunkTrust
SplunkTrust

You could, but I just use the python print command, and splunk eats it just fine. I used the exec command from the sh script and it works great.

0 Karma

ryan461
Explorer

That does get it to execute, the data being ingested was being printed, which splunk would read. But now that its a shell script executing it, i imagine ill have to write to a file or something?

0 Karma
Get Updates on the Splunk Community!

New Learning Videos on Topics Most Requested by You! Plus This Month’s New Splunk ...

Splunk Lantern is a customer success center that provides advice from Splunk experts on valuable data ...

How I Instrumented a Rust Application Without Knowing Rust

As a technical writer, I often have to edit or create code snippets for Splunk's distributions of ...

Splunk Community Platform Survey

Hey Splunk Community, Starting today, the community platform may prompt you to participate in a survey. The ...