小编Tak*_*oda的帖子

将参数传递给单元魔术%% script

与这个问题最相关的问题是:在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脚本。有办法解决这个问题吗?

编辑:这不同于链接的问题,因为我使用的是单元魔术而不是线魔术。我希望将所有代码单独在笔记本中可见。

python ipython paraview

6
推荐指数
1
解决办法
439
查看次数

Cython"不允许在常量表达式中",boundscheck False不起作用

我对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已被折旧.

UPDATE

我意识到我用过import Cython而不是cimport cython.我又试过了

cimport cython
Run Code Online (Sandbox Code Playgroud)

但得到同样的错误.

更新2

在类似的说明代码

cdef int N = 3
cdef …
Run Code Online (Sandbox Code Playgroud)

python cython python-3.x cythonize

4
推荐指数
1
解决办法
1332
查看次数

标签 统计

python ×2

cython ×1

cythonize ×1

ipython ×1

paraview ×1

python-3.x ×1