1
最近,我开始寻找到用Cython,以及Anaconda分布有这个方便的脚本cythonize
允许做如何使用cythonize-script包含numpy?
>cythonize -i foo.pyx
到位编译文件。
我的问题是我如何使用该脚本包含numpy,所以我的cimport numpy
工作正常?
我尝试用
>cythonize -X include_path=C:\Anaconda3\lib\site-packages\numpy\core\include -i foo.pyx
>cythonize -s include_path=C:\Anaconda3\lib\site-packages\numpy\core\include -i foo.pyx
也include_dir=...
,include_dirs=...
都与-X和-s
如果我使用-XI得到
Traceback (most recent call last):
File "C:\Anaconda3\Scripts\cythonize-script.py", line 5, in <module>
sys.exit(Cython.Build.Cythonize.main())
File "C:\Anaconda3\lib\site-packages\Cython\Build\Cythonize.py", line 185, in main
options, paths = parse_args(args)
File "C:\Anaconda3\lib\site-packages\Cython\Build\Cythonize.py", line 172, in parse_args
options, args = parser.parse_args(args)
File "C:\Anaconda3\lib\optparse.py", line 1387, in parse_args
stop = self._process_args(largs, rargs, values)
File "C:\Anaconda3\lib\optparse.py", line 1431, in _process_args
self._process_short_opts(rargs, values)
File "C:\Anaconda3\lib\optparse.py", line 1536, in _process_short_opts
option.process(opt, value, values, self)
File "C:\Anaconda3\lib\optparse.py", line 785, in process
self.action, self.dest, opt, value, values, parser)
File "C:\Anaconda3\lib\optparse.py", line 805, in take_action
self.callback(self, opt, value, parser, *args, **kwargs)
File "C:\Anaconda3\lib\site-packages\Cython\Build\Cythonize.py", line 38, in parse_directives
value, relaxed_bool=True, current_settings=old_directives)
File "C:\Anaconda3\lib\site-packages\Cython\Compiler\Options.py", line 424, in parse_directive_list
raise ValueError('Unknown option: "%s"' % name)
ValueError: Unknown option: "include_path"
与-s我得到
Traceback (most recent call last):
File "C:\Anaconda3\Scripts\cythonize-script.py", line 5, in <module>
sys.exit(Cython.Build.Cythonize.main())
File "C:\Anaconda3\lib\site-packages\Cython\Build\Cythonize.py", line 196, in main
cython_compile(path, options)
File "C:\Anaconda3\lib\site-packages\Cython\Build\Cythonize.py", line 90, in cython_compile
**options.options)
File "C:\Anaconda3\lib\site-packages\Cython\Build\Dependencies.py", line 809, in cythonize
ctx = c_options.create_context()
File "C:\Anaconda3\lib\site-packages\Cython\Compiler\Main.py", line 581, in create_context
self.cplus, self.language_level, options=self)
File "C:\Anaconda3\lib\site-packages\Cython\Compiler\Main.py", line 90, in __init__
self.include_directories = include_directories + [standard_include_path]
TypeError: unsupported operand type(s) for +: 'bool' and 'list'
是的,我可以做一个setup.py,但我觉得非常烦人,它留下了那里建立文件夹,而cythonize不这样做。
好吧,我想我会做一个自动设置生成器,让我为每个循环的例子每次扭动这样一个简单的安装文件... – Copperfield
如果你只是原型的东西,我经常只是在一个jupyter笔记本并使用'%% cython'魔法。 – JoshAdel
听起来不错,但我不习惯使用它,我更习惯与控制台一起工作 – Copperfield