相关疑难解决方法(0)

你怎么告诉pyximport使用cython -cplus选项?

pyximport非常方便,但我无法弄清楚如何让它为Cython使用C++语言选项.从命令行运行cython --cplus foo.pyx.你如何通过pyximport获得相同的效果?谢谢!

c++ python cython

15
推荐指数
2
解决办法
3092
查看次数

在使用distutils构建时,如何覆盖Cython的默认编译标志?

我正在编译Linux中的一些cython扩展,并注意到从distutils机制构建时默认使用-O2.我想知道是否有一种简单的方法可以将其更改为-O3.

我已尝试在Extension对象上使用extra_compile_args,但这会导致-O2和-O3作为参数传递给gcc.我有点想玩其他深奥的gcc选项,因此希望我能控制编译步骤.一个显而易见的问题是"为什么我不运行cython my.pyx并手动编译结果?".我很乐意,是我的答案......但是从命令行运行时,/ usr/local/bin /中的cython可执行文件会抛出一个DistributionNotFound:Cython == 0.12.1错误.我还没想出那一个.

无论如何,我不确定它是一个cython的东西,一个distutils的东西或一个破坏的apt包装的东西.我只是从ubuntu 11.10 apt repo中抓取了cython(目前正在使用ubuntu 11.10).

distutils cython

15
推荐指数
2
解决办法
5388
查看次数

使用pyximport.install时是否有一种干净的方法来抑制Cython的编译器警告?

假设我有一个以下结构的简单包:

cython_functions/
    __init__.py
    fib.pyx
Run Code Online (Sandbox Code Playgroud)

其中fib.pyx包括:

def fib(int n):
    fiblist = [0, 1]
    a, b = fiblist
    while b < n:
        a, b = b, a + b
        fiblist.append(b)
    return fiblist
Run Code Online (Sandbox Code Playgroud)

__init__.py包含:

import pyximport
pyximport.install()
from cython_functions.fib import fib
Run Code Online (Sandbox Code Playgroud)

如果我做了任何更改,fib.pyx每当我尝试导入包时,我都会得到一大堆编译器警告:

/Users/andfranklin/.pyxbld/temp.macosx-10.6-intel-3.5/pyrex/cython_functions/fib.c:1687:28: warning: unused function '__Pyx_PyObject_AsString' [-Wunused-function]
static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
                           ^
/Users/andfranklin/.pyxbld/temp.macosx-10.6-intel-3.5/pyrex/cython_functions/fib.c:1684:32: warning: unused function '__Pyx_PyUnicode_FromString' [-Wunused-function]
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
                               ^
.
.
.
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法可以抑制它们?在另一个问题中,他们描述了如何通过.pyxbld文件传递编译器标志.我可以创建 …

python cython

15
推荐指数
1
解决办法
882
查看次数

如何使用Cython将外部C函数导入到IPython笔记本中?

我想使用Cython将C函数导入到IPython笔记本中.目前,我正在尝试在Cython文档中复制该示例,但是我收到了编译错误.

我的Python代码(来自iPython笔记本):

import cython
%load_ext Cython
Run Code Online (Sandbox Code Playgroud)

----------------------------------新细胞

%%cython
cdef extern from "spam.c":
    void order_spam(int tons)
Run Code Online (Sandbox Code Playgroud)

我的C代码:

// spam.c
#include <stdio.h>

static void order_spam(int tons)
{
    printf("Ordered %i tons of spam!\n", tons);
}
Run Code Online (Sandbox Code Playgroud)

运行此代码,我得到以下回溯和错误消息:

CompileError                              Traceback (most recent call last)
<ipython-input-13-8bb733557977> in <module>()
----> 1 get_ipython().run_cell_magic(u'cython', u'', u'\ncdef extern from "spam.c":\n    void order_spam(int tons)')

/Users/danielacker/anaconda2/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in run_cell_magic(self, magic_name, line, cell)
   2118             magic_arg_s = self.var_expand(line, stack_depth)
   2119             with self.builtin_trap:
-> 2120                 result = fn(magic_arg_s, cell)
   2121             return result
   2122 

<decorator-gen-126> …
Run Code Online (Sandbox Code Playgroud)

c python ipython cython

5
推荐指数
1
解决办法
892
查看次数

标签 统计

cython ×4

python ×3

c ×1

c++ ×1

distutils ×1

ipython ×1