相关疑难解决方法(0)

将多个子模块折叠为一个Cython扩展

这个setup.py:

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

extensions = (
    Extension('myext', ['myext/__init__.py',
                        'myext/algorithms/__init__.py',
                        'myext/algorithms/dumb.py',
                        'myext/algorithms/combine.py'])
)
setup(
    name='myext',
    ext_modules=cythonize(extensions)
)
Run Code Online (Sandbox Code Playgroud)

没有预期的效果.我想要它生产单一的myext.so,它做的; 但是当我通过它调用它时

python -m myext.so
Run Code Online (Sandbox Code Playgroud)

我明白了:

ValueError: Attempted relative import in non-package
Run Code Online (Sandbox Code Playgroud)

由于myext试图参考的事实.algorithms.

知道如何让这个工作吗?

python distutils python-module cython

10
推荐指数
3
解决办法
3255
查看次数

如何将多个Cython pyx文件合并到一个链接库中?

我有多个.pyx文件,有没有办法将它们导入单个pyx文件并将该文件编译成共享库,而不必编译15个独立模块?

python cython

7
推荐指数
1
解决办法
3659
查看次数

Cython和distutils

我想使用Cython将多个.pyx文件转换为可执行包(.DLL).

如何通过distutils从多个.pyx创建单个Windows DLL?

使用的样本:

sub1.pyx:

cimport sub1

class A():
    def test(self, val):
        print "A", val
Run Code Online (Sandbox Code Playgroud)

sub1.pxd:

cdef class A:
    cpdef test(self,val)
Run Code Online (Sandbox Code Playgroud)

sub2.pyx:

cimport sub2

class B():
    def test(self):
        return 5
Run Code Online (Sandbox Code Playgroud)

sub2.pxd:

cdef class B:
    cpdef test(self)
Run Code Online (Sandbox Code Playgroud)

init .py:

cimport sub1
cimport sub2

import sub1
import sub2
Run Code Online (Sandbox Code Playgroud)

setup.py:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension("sub", ["__init__.pyx", "sub1.pyx", "sub2.pyx"])]

setup(
  name = 'Hello world app',
  cmdclass = {'build_ext': build_ext},
  ext_modules = ext_modules
)
Run Code Online (Sandbox Code Playgroud)

错误: …

python distutils cython

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

标签 统计

cython ×3

python ×3

distutils ×2

python-module ×1