首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: cythonize()缺少一个必需的位置参数:'module_list‘

TypeError: cythonize()缺少一个必需的位置参数:'module_list‘
EN

Stack Overflow用户
提问于 2022-09-30 14:14:38
回答 1查看 43关注 0票数 0

我正在尝试使用cython将python函数编译成C。函数main.py是:

代码语言:javascript
复制
def Factorial(y):
    x=0
    for i in range(1,y-1):
        x+=i
    return x

我用main.pyx中的Cython代码重写了它

代码语言:javascript
复制
def Factorial_cdef(int y):
    return(Factorial_in_c(y))

cdef int Factorial_in_c(int y):
    int x = 0
    int i
    
    for i in range(1,y+1):
        x+=i
    return x

cpdef int Factorial_cpdef(int y):
    return Factorial_cdef(y)

要编译成C,我创建了脚本setup.py

代码语言:javascript
复制
from setuptools import setup
from Cython.Build import cythonize
 
ext_modules = cythonize(
               compiler_directives={'language_level' : "3"} 
)
setup(
    ext_modules = cythonize('main_10factorial.pyx')
)

在命令行中运行代码(在同一文件夹中):

代码语言:javascript
复制
py setup.py build_ext --inplace

我得到以下错误:

代码语言:javascript
复制
TypeError: cythonize() missing 1 required positional argument: 'module_list'

我在网上找不到任何关于这个错误的参考。

EN

回答 1

Stack Overflow用户

发布于 2022-09-30 14:16:53

您在那里有一个额外的cythonize调用,它缺少模块列表。就这么做

代码语言:javascript
复制
from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize(
        "main_10factorial.pyx",
        compiler_directives={
            "language_level": "3"
        },
    )
)

你应该可以走了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73910113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档