julia lang - One-liner or short script to run the code inside a Jupyter notebook? -


i develop scripts running them piecemeal in jupyter (nee ijulia) notebook. however, need test things on remote system , need make copy of code .jl file. has written one-liner or short script runs code in .ipynb notebook? if not, i'll @ point , post code here.

here's have written up:

using json  get_code_cells(j::dict) = filter(x->x["cell_type"] == "code", j["cells"])  function parse_code_cell(c::dict)     buf = iobuffer()     write(buf, "begin\n")     map(x->write(buf, x), c["source"])     write(buf, "\nend")      src = bytestring(buf)     parse(src) end  extract_code(cells::vector) = expr[parse_code_cell(c) c in cells] extract_code(j::dict) = extract_code(get_code_cells(j)) eval_code(j::dict) = map(eval, extract_code(j))   # filename, parse json, run code const fn = args[1] eval_code(json.parsefile(fn)) 

it seems work many notebooks, not everything. specifically, failed run notebook had

using pycall @pyimport seaborn sns 

when eval hit chunk of code complained @pyimport not being defined (even though exported pycall).

if interested, clean up, add more arguments , package proper command line utility.


edit

now different...

this version shells out ipython nbconvert, writes temporary file, calls include on temporary file run code, deletes temp file. should more robust (it passed examples other 1 failed at). same comments cleaning/packaging apply.

const fn = abspath(args[1]) dir = dirname(fn)  # shell out nbconvert string code src = readall(`ipython nbconvert --to script --stdout $fn`)  # generate random filenamein directory, write code string script_fn = joinpath(dir, string(randstring(30), ".jl")) open(script_fn, "w") f     write(f, src) end  # try run file write. can make sure # call `rm(script_fn)` below. try     include(script_fn) catch     warn("failed executing script file") end  # clean deleting temporary file created rm(script_fn) 

Comments

Popular posts from this blog

c++ - Difference between pre and post decrement in recursive function argument -

php - Nothing but 'run(); ' when browsing to my local project, how do I fix this? -

php - How can I echo out this array? -