Importing code from a plugin into python notebook

Solved!
Antal
Importing code from a plugin into python notebook

I'd like to import python functions from a (self-made) plugin into a python notebook.

 

I've found this part in the User's Guide, but it's lacking examples and I can't get it to work:

https://doc.dataiku.com/dss/latest/plugins/reference/other.html

 

If I have a plugin with plugin id "xyz" and the following folder structure

xyz

----python-lib

--------custom_functions

--------------function_script.py

--------------__init__.py

 

How do I then use the functions dataiku.use_plugin_lib(pluginid) and dataiku.import_from_plugin(pluginid,packagename) to import functions from function_script.py above?

Let's say function_script.py contains 2 functions that I both want to import.


Operating system used: Windows

0 Kudos
1 Solution
JordanB
Dataiker

Hi @Antal,

Can you try putting the function_script.py file in the python-lib folder instead of the sub-folder? Also, was this code imported from Git? If so, the folder has most likely not been added to your PATH and will need to be added. Lastly, could you please double-check the permissions of your python-lib directory and all parent directories?

Thanks!

Jordan

View solution in original post

0 Kudos
5 Replies
JordanB
Dataiker

Hi @Antal,

Once you import the package using the DSS function dataiku.import_from_plugin, you should be able to use an import statement to access the functions. For example, "from function_script import *"

If you are receiving errors, please share a screenshot.

Thanks!

Jordan

0 Kudos
Antal
Author

If I try

import dataiku
dataiku.import_from_plugin('xyz', 'function_script')
from function_script import num_qt

I get an error as in the screenshot

Using 

import dataiku
dataiku.import_from_plugin('xyz', 'function_script.py')
from function_script import num_qt

instead gives the same error

 

(nb in the screenshot, the pluginid name is deleted for confidentiality purposes and the script name is diff_functions.py instead)

0 Kudos
JordanB
Dataiker

Hi @Antal,

Can you try putting the function_script.py file in the python-lib folder instead of the sub-folder? Also, was this code imported from Git? If so, the folder has most likely not been added to your PATH and will need to be added. Lastly, could you please double-check the permissions of your python-lib directory and all parent directories?

Thanks!

Jordan

0 Kudos
Antal
Author

Yes, when I put the script in the root of python-lib I can load from the plugin lib as expected.

I put them in a subdir for a reason, though. For clarity in plugin organisation.

It would be convenient if we could also load the code from subdirs in a Plugins python-lib

0 Kudos
JordanB
Dataiker

Hi @Antal 

You should be able to load the code from a subdirectory in python-lib, I just wanted to make sure that you had permission to read from that path. Can you please try the subdirectory again, SSH into the dss host and make sure the permissions are ok on that subdir? Also, please make sure that your __init__.py file contains def num_qt. And, try from custom_functions import function_script and/or from custom_functions.function_script import num_qt. 

Thanks!

Jordan

0 Kudos

Labels

?
Labels (3)
A banner prompting to get Dataiku