Hi Matthias

I am running into a path problem. I have started my juypter notebook server 
with the current working directory = ~/myWork. I am working on a notebooks 
at the following path ~/myWork/a/b/notebook1.ipynb Is there a way I can 
import definitions from a notebook in another directory under ~/mywork

thanks

Andy

p.s. I saw the doc about 'relative imports' how ever I could not get it to 
work


On Friday, April 14, 2017 at 1:17:12 PM UTC-7, Matthias Bussonnier wrote:
>
> Hi Andy, 
>
> Yes, feel free to report a bug there, we can try to follow-up on the 
> repository and track it appropriately. 
>
> Thanks ! 
> -- 
> M 
>
> On Fri, Apr 14, 2017 at 12:29 PM, Andy Davidson 
> <[email protected] <javascript:>> wrote: 
> > Hi Matthias 
> > 
> > ipynb is what I was looking for. I noticed two small problems. (I am not 
> > sure where/how to report them) 
> > 
> > 1) You can not import functions that have doc strings in them. 
> > 
> > Here is the error msg 
> > 
> >  File "<unknown>", line 13 
> >     """uses Gauss's method for summing integers 
> > http://wmueller.com/precalculus/advanced/hint4_3_6.html"""; 
> >     ^ 
> > IndentationError: unexpected indent 
> > 
> > 
> > 2) I needed to use import 'as'. I think the 
> https://github.com/ipython/ipynb 
> > readme.md needs to be update. 
> > 
> > 
> > Here is an example 
> > 
> > 
> > import ipynb.fs.defs.myMathFunctions as mmf 
> > 
> > mmf.quickSum(5) 
> > 
> > 
> > 
> > 
> > 
> > many thanks 
> > 
> > 
> > On Thursday, April 13, 2017 at 7:17:45 PM UTC-7, Matthias Bussonnier 
> wrote: 
> >> 
> >> Hi Andy, 
> >> 
> >> I would suggest to look at https://github.com/ipython/ipynb , which is 
> >> supposed to do what you want by walking the AST. 
> >> We need to polish it and advertise it more, feedback (and 
> >> contributions) would be welcome. 
> >> -- 
> >> Matthias 
> >> 
> >> On Thu, Apr 13, 2017 at 5:28 PM, Andy Davidson 
> >> <[email protected]> wrote: 
> >> > Hi 
> >> > 
> >> > I have a couple of python functions defined in one notebook that I 
> would 
> >> > like to reuse in another. I found the following direction. 
> >> > 
> >> > 
> >> > 
> http://jupyter-notebook.readthedocs.io/en/latest/examples/Notebook/Importing%20Notebooks.html
>  
> >> > 
> >> > 
> >> > 
> https://github.com/jupyter/notebook/blob/master/docs/source/examples/Notebook/Importing%20Notebooks.ipynb
>  
> >> > 
> >> > My challenge is I have a lot of cells that define straight python 
> code. 
> >> > These cells often load large data files and are very slow. Ideally I 
> >> > would 
> >> > like to to only import functions. It looks like the heavy lifting is 
> >> > done by 
> >> > NotebookLoader() bellow. Maybe there is a clever way to only execute 
> >> > function definitions? Is there a way to get the abstract syntax tree 
> for 
> >> > the 
> >> > code in a cell and pick out the function definitions? 
> >> > 
> >> > As a newbie my hack would be to require functions be defined in their 
> >> > own 
> >> > cell. Next before execute check the cell code for lines beginning 
> with 
> >> > ‘def' 
> >> > 
> >> > class NotebookLoader(object): 
> >> >     """Module Loader for Jupyter Notebooks""" 
> >> >     def __init__(self, path=None): 
> >> >         self.shell = InteractiveShell.instance() 
> >> >         self.path = path 
> >> > 
> >> >     def load_module(self, fullname): 
> >> >         """import a notebook as a module""" 
> >> >         path = find_notebook(fullname, self.path) 
> >> > 
> >> >         print ("importing Jupyter notebook from %s" % path) 
> >> > 
> >> >         # load the notebook object 
> >> >         with io.open(path, 'r', encoding='utf-8') as f: 
> >> >             nb = read(f, 4) 
> >> > 
> >> > 
> >> >         # create the module and add it to sys.modules 
> >> >         # if name in sys.modules: 
> >> >         #    return sys.modules[name] 
> >> >         mod = types.ModuleType(fullname) 
> >> >         mod.__file__ = path 
> >> >         mod.__loader__ = self 
> >> >         mod.__dict__['get_ipython'] = get_ipython 
> >> >         sys.modules[fullname] = mod 
> >> > 
> >> >         # extra work to ensure that magics that would affect the 
> user_ns 
> >> >         # actually affect the notebook module's ns 
> >> >         save_user_ns = self.shell.user_ns 
> >> >         self.shell.user_ns = mod.__dict__ 
> >> > 
> >> >         try: 
> >> >           for cell in nb.cells: 
> >> >             if cell.cell_type == 'code': 
> >> >                 # transform the input to executable Python 
> >> >                 code = 
> >> > self.shell.input_transformer_manager.transform_cell(cell.source) 
> >> >                 # run the code in themodule 
> >> >                 exec(code, mod.__dict__) 
> >> >         finally: 
> >> >             self.shell.user_ns = save_user_ns 
> >> >         return mod 
> >> > 
> >> > 
> >> > 
> >> > P.s. I found Importing%20Notebooks.html hard to use. It might be 
> easier 
> >> > of 
> >> > the code as split out and this notebook and put in the standard 
> >> > distribution 
> >> > of jupyter.  “how to import notebooks.ipynb” then becomes 2 lines 
> >> > 
> >> > Import importNotebookHelper 
> >> > Import myNotebook 
> >> > 
> >> > Kind regards 
> >> > 
> >> > Andy 
> >> > 
> >> > -- 
> >> > You received this message because you are subscribed to the Google 
> >> > Groups 
> >> > "Project Jupyter" group. 
> >> > To unsubscribe from this group and stop receiving emails from it, 
> send 
> >> > an 
> >> > email to [email protected]. 
> >> > To post to this group, send email to [email protected]. 
> >> > To view this discussion on the web visit 
> >> > 
> >> > 
> https://groups.google.com/d/msgid/jupyter/D51565AA.571A2%25Andy%40SantaCruzIntegration.com.
>  
>
> >> > For more options, visit https://groups.google.com/d/optout. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "Project Jupyter" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > To view this discussion on the web visit 
> > 
> https://groups.google.com/d/msgid/jupyter/5e2fc660-31b1-47bf-ada5-49e20b12c896%40googlegroups.com.
>  
>
> > 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/045b102d-fb0d-4303-9216-0da9672a5a85%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to