Ask Your Question

How to use cython functions from other cython cells in notbook?

asked 2013-01-11 18:02:42 +0200

Steven gravatar image

updated 2013-01-11 18:06:00 +0200

Hi, I'm currently using sage with the notebook interface. How can I define a function in a cython cell and use it in another cython cell?

I understand I need to import the first cython module but the name changes after every evaluation.

Also being able to do this directly from notebook (without writing a separate cython file) and from separate cells would be handy.

For example this works fine:


def test(int n):
    return 2*n

cell 2:

def test2(m):
    return test(m)

cell 3:


but this does not:

cell 4:

def test3(int m):
    return test(m)
pyx:7:15: undeclared name not builtin: test

Thank you :)

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2013-01-12 17:00:00 +0200

This works for me:

from __main__ import test

def test3(int m):
    return test(m)

The function name test is making things more confusing in this case. Python has a module named test, so if you just use import test, the module masks the previously defined function.

edit flag offensive delete link more



Renaming the function to `test00001` and `import test00001` in the other cell also doesn't work. It gets an error `ImportError: No module named test00001`. But your method works.

ppurka gravatar imageppurka ( 2013-01-12 20:12:17 +0200 )edit

Would be nice to explain such a basic thing in the documentation regarding cython in Sage.

anatematic gravatar imageanatematic ( 2013-01-14 09:48:52 +0200 )edit

Thank you. That did the trick!

Steven gravatar imageSteven ( 2013-01-14 12:07:27 +0200 )edit

@anatematic I have opened [#13952](

ppurka gravatar imageppurka ( 2013-01-14 12:53:57 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2013-01-11 18:02:42 +0200

Seen: 3,413 times

Last updated: Jan 12 '13