与这个问题最相关的问题是:在Ipython中,如何将参数传递给单元格,就像它是自己的脚本一样?
我正在编写一个ipython笔记本进行模拟,然后在paraview中创建动画。我这样做的方法是使用magic命令运行单元
%%script pvpython
Run Code Online (Sandbox Code Playgroud)
因为paraview有自己的解释器。问题是我需要它将vtu文件的目录作为参数传递给它(这是IPython内核中的变量)。到目前为止,我还无法弄清楚这一点。我试过了:
%%script pvpython path/to/files
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo')
args = parser.parse_args()
print(args.foo)
Run Code Online (Sandbox Code Playgroud)
但这会导致错误:`未知参数:path / to / files,因为该参数被传递给了magic命令而不是python脚本。有办法解决这个问题吗?
编辑:这不同于链接的问题,因为我使用的是单元魔术而不是线魔术。我希望将所有代码单独在笔记本中可见。
我对Cython比较新,遇到了一个我的研究失败的错误(我在spyder中使用Python3而我的Sython版本是0.26)
我试过这个:
import cython
@cython.boundscheck(False)
def boundtest():
cdef int r=4
cdef double l[3]
Run Code Online (Sandbox Code Playgroud)
它工作正常.但后来我尝试了这个:
import cython
@cython.boundscheck(False)
def boundtest():
cdef int r=4
cdef double l[r]
Run Code Online (Sandbox Code Playgroud)
我收到错误
[1/1] Cythonizing test.pyx
Error compiling Cython file:
------------------------------------------------------------
...
import cython
@cython.boundscheck(False)
def boundtest():
cdef int r=4
cdef double l[r]
^
------------------------------------------------------------
test.pyx:13:20: Not allowed in a constant expression
Run Code Online (Sandbox Code Playgroud)
由于找到了相关的stackexchange帖子并阅读了Kurt W. Smith的Cython书,因此添加了装饰器.据我所知,这应该告诉Cython不要担心可能因动态索引变量而导致的超出界限错误,但由于某种原因它不会.我也尝试在编译器选项中更改boundscheck并在全局范围内无效.
如果不是因为Cython文档声称是最新的,我会认为boundscheck已被折旧.
我意识到我用过import Cython
而不是cimport cython
.我又试过了
cimport cython
Run Code Online (Sandbox Code Playgroud)
但得到同样的错误.
在类似的说明代码
cdef int N = 3
cdef …
Run Code Online (Sandbox Code Playgroud)