gpt4 book ai didi

python - 让 sage 与 ipython 一起工作

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:53 24 4
gpt4 key购买 nike

我已经下载并运行了make来安装sage,但是当我尝试在ipython笔记本中运行以下代码时,我得到了一个由于无法正确导入 sage 程序的方法,出现很多错误消息:

%load_ext cythonmagic 

然后

%%cython 

include "sage/gsl/gsl.pxi"

cdef double do_callback(double x, void* params):
return (<MyCallback>params).eval(x)

cdef class MyCallback:
cdef double a
def __init__(self, a):
self.a = a
cpdef double eval(self, double x):
print "eval", x, self.a * x * x
return self.a * x * x
def call_gsl(self):
cdef gsl_integration_workspace* w =
gsl_integration_workspace_alloc (1000)

cdef gsl_function F
F.function = &do_callback
F.params = <void*>self

cdef double result, error
gsl_integration_qags (&F, 0, 1, 0, 1e-7, 1000, w, &result, &error);
print result, error

gsl_integration_workspace_free(w)

错误是:

InternalError                             Traceback (most recent call last)
<ipython-input-3-3bcbbcb051de> in <module>()
----> 1 get_ipython().run_cell_magic(u'cython', u'', u'include "sage/gsl/gsl.pxi" \n\ncdef double do_callback(double x, void* params): \n (<MyCallback>params).eval(x) \n\ncdef class MyCallback: \n cdef double a \n def __init__(self, a): \n self.a = a \n cpdef double eval(self, double x): \n print "eval", x, self.a * x * x \n return self.a * x * x \n def call_gsl(self): \n cdef gsl_integration_workspace* w = \ngsl_integration_workspace_alloc (1000) \n\n cdef gsl_function F \n F.function = &do_callback \n F.params = <void*>self \n\n cdef double result, error \n gsl_integration_qags (&F, 0, 1, 0, 1e-7, 1000, w, &result, &error); \n print result, error \n\n gsl_integration_workspace_free(w) ')

/anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in run_cell_magic(self, magic_name, line, cell)
2127 magic_arg_s = self.var_expand(line, stack_depth)
2128 with self.builtin_trap:
-> 2129 result = fn(magic_arg_s, cell)
2130 return result
2131

/anaconda/lib/python2.7/site-packages/IPython/extensions/cythonmagic.pyc in cython(self, line, cell)

/anaconda/lib/python2.7/site-packages/IPython/core/magic.pyc in <lambda>(f, *a, **k)
189 # but it's overkill for just that one bit of state.
190 def magic_deco(arg):
--> 191 call = lambda f, *a, **k: f(*a, **k)
192
193 if callable(arg):

/anaconda/lib/python2.7/site-packages/IPython/extensions/cythonmagic.pyc in cython(self, line, cell)
242 force = True,
243 )
--> 244 build_extension.extensions = cythonize([extension], **opts)
245 except CompileError:
246 return

/anaconda/lib/python2.7/site-packages/Cython-0.20.1-py2.7-linux-x86_64.egg/Cython/Build/Dependencies.pyc in cythonize(module_list, exclude, nthreads, aliases, quiet, force, exclude_failures, **options)
692 quiet=quiet,
693 exclude_failures=exclude_failures,
--> 694 aliases=aliases)
695 deps = create_dependency_tree(ctx, quiet=quiet)
696 build_dir = getattr(options, 'build_dir', None)

/anaconda/lib/python2.7/site-packages/Cython-0.20.1-py2.7-linux-x86_64.egg/Cython/Build/Dependencies.pyc in create_extension_list(patterns, exclude, ctx, aliases, quiet, exclude_failures)
618 if module_name not in seen:
619 try:
--> 620 kwds = deps.distutils_info(file, aliases, base).values
621 except Exception:
622 if exclude_failures:

/anaconda/lib/python2.7/site-packages/Cython-0.20.1-py2.7-linux-x86_64.egg/Cython/Build/Dependencies.pyc in distutils_info(self, filename, aliases, base)
528
529 def distutils_info(self, filename, aliases=None, base=None):
--> 530 return (self.transitive_merge(filename, self.distutils_info0, DistutilsInfo.merge)
531 .subs(aliases)
532 .merge(base))

/anaconda/lib/python2.7/site-packages/Cython-0.20.1-py2.7-linux-x86_64.egg/Cython/Compiler/Main.pyc in find_include_file(self, filename, pos)
217 include=True)
218 if not path:
--> 219 error(pos, "'%s' not found" % filename)
220 return path
221

/anaconda/lib/python2.7/site-packages/Cython-0.20.1-py2.7-linux-x86_64.egg/Cython/Compiler/Errors.pyc in error(position, message)
165 #print "Errors.error:", repr(position), repr(message) ###
166 if position is None:
--> 167 raise InternalError(message)
168 err = CompileError(position, message)
169 if DebugFlags.debug_exception_on_error: raise Exception(err) # debug

InternalError: Internal compiler error: 'sage/gsl/gsl.pxi' not found

有什么想法可以帮助它发挥作用吗?

最佳答案

我自己没有在 Sage 中使用 IPython 笔记本,而且我也不是 Cython 专家,所以对此持保留态度。 (希望那些这样做的人会看到这一点 - 还有更多的人闲逛 here 。)但是,如果从 from sage.all import * 开始有帮助,我不会感到惊讶。我不知道可以像您尝试那样包含一个随机 header 。事实证明,仅导入 Sage 的一小部分......并不那么容易。在某种程度上,是故意的。

关于python - 让 sage 与 ipython 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com