标签: cython

构建scipy错误cythonize失败

我正在尝试构建scipy,我得到一个RuntimeError:

$sudo python setup.py build
Processing scipy/cluster/_vq_rewrite.pyx
Traceback (most recent call last):
  File "tools/cythonize.py", line 172, in <module>
    main()
  File "tools/cythonize.py", line 168, in main
    find_process_files(root_dir)
  File "tools/cythonize.py", line 160, in find_process_files
    process(cur_dir, fromfile, tofile, function, hash_db)
  File "tools/cythonize.py", line 137, in process
    processor_function(fromfile, tofile)
  File "tools/cythonize.py", line 66, in process_pyx
    raise OSError('Cython needs to be installed')
OSError: Cython needs to be installed

Traceback (most recent call last):
  File "setup.py", line 209, in <module>
    setup_package()
  File "setup.py", line 202, in …
Run Code Online (Sandbox Code Playgroud)

python cython scipy

30
推荐指数
1
解决办法
3万
查看次数

在Python中调用C函数

我有一堆用C编写的函数,我想要一些用Python编写的代码来访问这些函数.

我在这里已经阅读了几个处理类似问题的问题(例如这里这里),但我对我需要采取哪种方法感到困惑.

一个问题推荐ctypes,另一个推荐cython.我已经阅读了两篇文档,我完全不清楚哪一个对我有用.

基本上我已经写了一些python代码来做一些二维FFT,我希望C代码能够看到那个结果然后通过我编写的各种C函数来处理它.我不知道我是否更容易从C调用Python,反之亦然.

c python ctypes cython

30
推荐指数
3
解决办法
4万
查看次数

Cython-无法打开包含文件:'io.h':没有这样的文件或目录

刚开始学习cython.我试图编译一个简单的.pyx文件.

print("hello")
Run Code Online (Sandbox Code Playgroud)

这是我的setup.py:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("hello.pyx")
)
Run Code Online (Sandbox Code Playgroud)

然后我运行命令.

python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)

错误如下.我一直在谷歌搜索它,没有任何帮助来找我.

    running build_ext
    building 'hello' extension
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD
-IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include -IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE"
"-IC:\Program Files (x86)\Windows Kits\10\include\wdf\ucrt"
"-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um"
"-IC:\Program Files (x86)\Windows Kits\8.1\include\shared"
"-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program
Files (x86)\Windows Kits\8.1\include\winrt" /Tchello.c
/Fobuild\temp.win32-3.5\Release\hello.obj  
    hello.c
    c:\users\jackie\appdata\local\continuum\anaconda3\include\pyconfig.h(68):
fatal error C1083: Cannot open include file: 'io.h': …
Run Code Online (Sandbox Code Playgroud)

python cython

30
推荐指数
8
解决办法
5万
查看次数

将带有字符串的结构化numpy数组传递给cython函数

我试图在cython中创建一个函数,通过定义一个cython结构类型接受一个numpy结构化数组或记录数组.假设我有数据:

a = np.recarray(3, dtype=[('a', np.float32),  ('b', np.int32), ('c', '|S5'), ('d', '|S3')])
a[0] = (1.1, 1, 'this\0', 'to\0')
a[1] = (2.1, 2, 'that\0', 'ta\0')
a[2] = (3.1, 3, 'dogs\0', 'ot\0')
Run Code Online (Sandbox Code Playgroud)

(注意:无论是否使用null终止符,都会出现下面描述的问题)

然后我有cython代码:

import numpy as np
cimport numpy as np

cdef packed struct tstruct:
    np.float32_t a
    np.int32_t b
    char[5] c
    char[3] d

def test_struct(tstruct[:] x):
    cdef:
        int k
        tstruct y

    for k in xrange(3):
        y = x[k]
        print y.a, y.b, y.c, y.d
Run Code Online (Sandbox Code Playgroud)

当我尝试运行时test_struct(a),我收到错误:

ValueError: Expected a dimension of …
Run Code Online (Sandbox Code Playgroud)

python string numpy cython recarray

29
推荐指数
1
解决办法
1971
查看次数

cython中np.int,np.int_,int和np.int_t之间的区别?

int对cython中的这么多数据类型感到有点挣扎.

np.int, np.int_, np.int_t, int

我猜int在纯python中相当于np.int_,那么它np.int来自哪里呢?我从numpy找不到文件?另外,np.int_鉴于我们已经存在,为什么存在int

在cython中,我猜想int当它被用作cdef int或者成为C型时ndarray[int],并且当int()它被用作python施法者时它会被使用?

np.int_相当于long用C?那cdef long是相同的cdef np.int_吗?

我应该在什么情况下使用np.int_t而不是np.int?例如cdef np.int_t,ndarray[np.int_t]......

有人可以简单解释这些类型的错误使用会如何影响已编译的cython代码的性能?

c python numpy cython

29
推荐指数
2
解决办法
2万
查看次数

Cython中的字符串操作

我有一些代码可以执行一些非常耗费CPU的字符串操作,我一直在寻找提高性能的方法.

(编辑:我正在做的事情就像找到最常见的子串,运行大量正则表达式,可能更好地表达为c中的状态机,从HTML中剥离注释,这样的东西.)

我目前正在考虑将一些代码移植到Cython之后听到很多关于它的好东西.然而,似乎Cython的主要焦点是数值计算,并且使用字符串几乎没有记录.

Unicode也可能是一个大问题.

我的问题是:

  1. 我是否应该为Cython打扰字符串?有没有人在cython中有这种类型的处理经验,可以分享?
  2. 我在Cython文档中遗漏了什么吗?有没有人知道在Cython中使用字符串的教程/参考/文档?

python string cython

28
推荐指数
5
解决办法
7371
查看次数

如何逐行分析cython功能

我经常很难找到cython代码中的瓶颈.如何cython逐行分析功能?

profiling cython

27
推荐指数
3
解决办法
7357
查看次数

Cython -a标志(生成黄色阴影的HTML),不带命令行

从命令行运行时

$ cython -a mycode.pyx
Run Code Online (Sandbox Code Playgroud)

你得到一个非常好的HTML"注释"文件,带有黄色阴影,表示慢速python操作与快速C操作.每次在Sage中编译Cython代码时,您也会获得相同的HTML文件作为链接.我的问题是:(1)如果我正在编译使用distutils,我可以得到这个HTML文件吗?(2)如果我使用pyximport进行编译,是否可以获取此HTML文件?谢谢!!

cython

26
推荐指数
1
解决办法
7792
查看次数

Cython:cimport和import numpy as(both)np

在Cython文档的教程中,有numpy模块的cimport和import语句:

import numpy as np
cimport numpy as np
Run Code Online (Sandbox Code Playgroud)

我发现这个约定在numpy/cython用户中很受欢迎.

这看起来很奇怪的我,因为他们命名为NP.在哪部分代码中,使用了导入/ cimported np?为什么cython编译器不会混淆它们?

python numpy cython python-import

26
推荐指数
1
解决办法
6591
查看次数

带有__init __.pyx的Cython包:可能吗?

是否可以使用__init__.pyx(编译__init__.so)创建Python 2.7包?如果是这样的话?我没有运气好运.

这是我尝试过的:

  • setup.py:

    #!/usr/bin/env python
    
    from distutils.core import setup
    from distutils.extension import Extension
    from Cython.Distutils import build_ext
    
    foo = Extension(name='foo.__init__', sources=['foo/__init__.pyx'])
    bar = Extension(name='foo.bar', sources=['foo/bar.pyx'])
    
    setup(name='foo',
          packages = ['foo'],
          cmdclass={'build_ext':build_ext},
          ext_modules = [foo, bar])
    
    Run Code Online (Sandbox Code Playgroud)
  • foo/__init__.pyx:

    import foo.bar
    
    cpdef hello_world():
        print "hello world"
        foo.bar.blah()
    
    Run Code Online (Sandbox Code Playgroud)
  • foo/bar.pyx:

    cpdef blah():
        print "blah"
    
    Run Code Online (Sandbox Code Playgroud)

以上具有以下行为:

$ python -c 'import foo; foo.hello_world()'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named foo
Run Code Online (Sandbox Code Playgroud)

我看到 …

python cython python-import python-c-extension python-2.7

26
推荐指数
1
解决办法
3444
查看次数