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.
