我有一个纯Python脚本,我想将其分发到具有未知Python配置的系统。因此,我想将Python代码编译为独立的可执行文件。我跑cython--embed./foo.py没有问题给foo.c.然后,我跑gcc$(python3-config--cflags)$(python3-config--ldflags)./foo.c哪里python3-config--cflags给-I/usr/include/python3.5m-I/usr/include/python3.5m-Wno-unused-result-Wsign-compare-g-fdebug-prefix-map=/buil
我有以下代码可以正确转换为cython:fromnumpyimport*##returnswinningplayersor[]ifundecided.defscore(board):scores=[]checked=zeros(board.shape)foriinxrange(len(board)):forjinxrange(len(board)):ifchecked[i,j]==0andboard[i,j]!=0:...dostuf我尝试转换为cython:importnumpyasnpcimportnumpyasnp@cython.boundscheck(False)@cython
几周前,我问了一个关于提高用Python编写的函数的速度的问题。当时,TryPyPy让我注意到使用Cython的可能性。他还友好地举例说明了我如何对该代码片段进行Cythonize化。我想对下面的代码做同样的事情,看看通过声明变量类型可以多快。我有几个与此相关的问题。我看过cython.org上的教程,但我仍有一些疑问。它们密切相关:我对C语言一窍不通。要使用Cython声明变量类型,我需要学习哪些部分?python列表和元组对应的C类型是什么?例如,我可以将Cython中的double用于Python中的float。我要为列表做什么?通常,我在哪里可以找到给定Python类型对应的C
我想使用Cython创建我自己的列表容器。我是它的新手,按照文档我可以创建这样的结构:cdefstructs_intList:intvaluevoid*nextctypedefs_intListintList但是当访问结构成员的时候,我找不到好的语法:cpdefvoidfoo():cdefintList*li#li.valueORli->value抛出:“警告:intlists.pyx:8:12:赋值前引用了局部变量‘li’”这让我假设我的cython结构使用不正确......知道我在这里做错了什么吗?:)谢谢你的帮助 最佳答案 您
有没有办法中断(Ctrl+C)基于嵌入在Cython扩展中的循环的Python脚本?我有以下python脚本:defmain():#Intantiatesimulatorsim=PySimulator()sim.Run()if__name__=="__main__":#TrytodealwithCtrl+Ctoaborttherunningsimulationinterminal#(Doesn'twork...)try:sys.exit(main())except(KeyboardInterrupt,SystemExit):print'\n!Receivedkeyboardinterr
我有一个Cython模块,我想对其进行lintPEP8样式,但是Cythoncdef语法上的pylint语法错误。有人对如何维护Cython代码的Python编码标准有什么建议吗? 最佳答案 虽然不是基于命令行,PyCharmclaimstohaveCythonsupport.遗憾的是,它仅适用于付费版“专业版”。 关于python-检测Cython代码的选项,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.
我最近一直在使用Cython来提高速度,但我的项目继承了一个具有copy()的模块使用deepcopy()的方法.我尝试实现deepcopy()在copy()的覆盖版本中,我以为我已经开始工作了,但它似乎不再工作了。TypeError:object.__new__(cython_binding_builtin_function_or_method)isnotsafe,usecython_binding_builtin_function_or_method.__new__()这发生在python/lib/copy_reg.py中:returncls.__new__(cls,*args)我
在Cython中,常用的raise关键字发出C代码,其中包含对Cython源文件的行和名称的引用,从而生成有用的错误消息。但是,我还没有看到任何警告。简单地调用warnings.warn会让解释器对警告的来源感到困惑。如果pyx文件有类似于__LINE__宏的内容,我可以使用PyErr_WarnExplicit。在Cython中是否有发出警告的标准方法或引用pyx行号的标准方法?更新这个问题已经开放了几个月,所以我只能假设Cython目前没有发出警告的好方法。我会在这里打开它,以防有人找到方法/提交补丁来使这项工作正常进行。 最佳答案
我有几个python模块(组织成包),它们相互依赖。例如模块1模块2:导入模块1模块3模块4:导入模块3、模块2、模块1假设开发应用程序的相关接口(interface)在Module4中,我想使用cython生成一个Module4.so。如果我以天真的方式继续,我会得到一个扩展Module4.so,我可以导入它但是扩展依赖于Module1、Module2、Module3的python源代码。有没有一种编译方式,使得Module1、Module2、Module3也被编译并链接到Module4?我想避免手动执行所有操作,例如先编译Module1.so然后修改Module2中的import声
我有几个python模块(组织成包),它们相互依赖。例如模块1模块2:导入模块1模块3模块4:导入模块3、模块2、模块1假设开发应用程序的相关接口(interface)在Module4中,我想使用cython生成一个Module4.so。如果我以天真的方式继续,我会得到一个扩展Module4.so,我可以导入它但是扩展依赖于Module1、Module2、Module3的python源代码。有没有一种编译方式,使得Module1、Module2、Module3也被编译并链接到Module4?我想避免手动执行所有操作,例如先编译Module1.so然后修改Module2中的import声