emcli, python, jython, and module not found (ImportError No Module Named n)
I've been diving into more OEM Automation and collecting information here.
While the Oracle example scripts are a great way to find out how to interact with OEM via the emcli and python/jython interface, there doesn't seem to be much info about how this all gets done. You feed a Python script to emcli and magic happens right?
Adeesh Fulay has a great intro article here.
As I refactor code a break reusable pieces into my own custom Python Modules I came across this fun tidbit... You can create a python module and prove it works with your local python installation... but the EMCLI's Jython interpreter has a special directory where the module code needs to live in order to make use if it when you feed a Python script to EMCLI.
Make sure to copy your module code into the $MIDDLEWARE_HOME/bin/emcliext directory. It doesn't need to be compiled, it will be compiled if needed upon the first invocation, but if you are involved in a session and see an error similar to what is below, then the Jython interpreter that EMCLI is calling cannot find your module and needs to be available in that emcliext directory:
[oracle@localhost emcli]$ emcli @my_test_calling_custom_module.py Traceback (most recent call last): File "my_test_calling_custom_module.py", line 12, in <module> import newmodule ImportError: No module named newmodule [oracle@localhost emcli]$