草庐IT

cythonized

全部标签

python - ImportError:没有名为 Cython.Distutils 的模块

我在尝试使用其setup.py文件安装Python库zenlib时遇到了一个奇怪的问题。当我运行setup.py文件时,我得到一个导入错误,说ImportError:NomodulenamedCython.Distutils`但我确实有这样的模块,我可以在python命令行中导入它而没​​有任何麻烦。为什么我会收到此导入错误?我认为问题可能与我使用EnthoughtPythonDistribution的事实有关。,我预先安装了它,而不是使用Ubuntu12.04附带的Python2.7。更多背景:这正是我尝试运行setup.py时得到的结果:enwe101@enwe101-PCL:~/

python - 使用 LAPACK 分发基于 Cython 的扩展

我正在编写一个包含Cython扩展并使用LAPACK(和BLAS)的Python模块。如果需要,我愿意使用clapack或lapacke,或某种f2c或f2py解决方案。重要的是我能够在没有Python调用开销的情况下从Cython调用lapack和blas例程。我找到了一个例子here.但是,该示例取决于SAGE。我希望我的模块可以在不安装SAGE的情况下安装,因为我的用户不太可能想要或不需要SAGE做其他任何事情。我的用户可能安装了numpy、scipy、pandas和scikitlearn等软件包,因此这些都是合理的依赖项。要使用的最佳接口(interface)组合是什么,最小的

python - 用 cython 和 mingw 编译产生 gcc : error: unrecognized command line option '-mno-cygwin'

我正在尝试使用mingw(64位)在win764位中使用cython编译python扩展。我正在使用Python2.6(ActivePython2.6.6)和足够的distutils.cfg文件(将mingw设置为编译器)执行时>C:\Python26\programas\Cython>pythonsetup.pybuild_ext--inplace我收到一条错误消息,说gcc没有-mno-cygwin选项:>C:\Python26\programas\Cython>pythonsetup.pybuild_ext--inplacerunningbuild_extskipping'hel

python - 我应该如何构建包含 Cython 代码的 Python 包

我想制作一个Python包,其中包含一些Cython代码。我的Cython代码运行良好。但是,现在我想知道如何最好地打包它。对于大多数只想安装软件包的人,我想包含Cython创建的.c文件,并安排setup.py进行编译生成模块。那么用户不需要安装Cython来安装包。但是对于可能想要修改包的人,我还想提供Cython.pyx文件,并且以某种方式还允许setup.py使用Cython构建它们(因此那些用户将需要安装Cython)。我应该如何构建包中的文件以适应这两种情况?Cythondocumentationgivesalittleguidance.但它没有说明如何制作一个处理有/无C

c++ - 在 Cython 中做列表/字典的惯用方式?

我的问题:我发现使用STL映射和vector使用原始C++处理大型数据集通常比使用Cython快得多(并且内存占用更少)。我认为这种速度损失的一部分是由于使用了Python列表和字典,并且可能有一些技巧可以在Cython中使用较少的数据结构。例如,此页面(http://wiki.cython.org/tutorials/numpy)展示了如何通过预定义ND数组的大小和类型在Cython中非常快速地制作numpy数组。问题:有没有办法用列表/字典做类似的事情,例如通过大致说明您希望其中包含多少个元素或(键,值)对?也就是说,有没有一种惯用的方式将列表/字典转换为Cython中的(快速)数

python - 扩展 python - swig,而不是 swig 或 Cython

我在我的python代码中发现了瓶颈,尝试了Psycho等。然后决定编写一个c/c++扩展来提高性能。在swig的帮助下,您几乎不需要关心参数等。一切正常。现在我的问题是:swig创建了一个相当大的py文件,它在调用实际的.pyd或.so代码之前做了很多“检查”和“PySwigObject”。如果您手写这个文件或让swig来做,你们中的任何人是否有任何经验是否可以获得更多的性能。 最佳答案 如果您不打算使用swig为其他语言生成绑定(bind),则应该考虑Boost.Python。如果你有很多函数和类要绑定(bind),Py++是一

python - 在 Python : C, Cython 或 ctypes 中包装 C 库?

我想从Python应用程序调用C库。我不想包装整个API,只包装与我的案例相关的函数和数据类型。在我看来,我有三个选择:用C语言创建一个实际的扩展模块。可能有点矫枉过正,而且我还想避免学习扩展编写的开销。使用Cython将C库中的相关部分公开给Python。在Python中完成所有操作,使用ctypes与外部库进行通信。我不确定2)还是3)是更好的选择。3)的优点是ctypes是标准库的一部分,生成的代码将是纯Python——尽管我不确定这种优势实际上有多大。这两种选择是否有更多优点/缺点?您推荐哪种方法?编辑:感谢您的所有回答,它们为任何想要做类似事情的人提供了很好的资源。当然,仍然

python - 使用 Cython 的 setup_requires?

我正在为带有一些Cython扩展模块的项目创建一个setup.py文件。我已经让这个工作了:fromsetuptoolsimportsetup,ExtensionfromCython.Buildimportcythonizesetup(name=...,...,ext_modules=cythonize([...]),)这安装得很好。但是,这假设安装了Cython。如果没有安装怎么办?我知道这就是setup_requires参数的用途:fromsetuptoolsimportsetup,ExtensionfromCython.Buildimportcythonizesetup(name

c++ - 使用 cython 包装 c++ 结构模板

我正在尝试访问结构templatestructData{doubleX[dim];doubleVal[dim];};在赛通中。我猜正确的语法应该是这样的:cdefexternfrom"Lib.h"namespace"LIB":cdefstructData[intdim]:doubleX[dim];doubleVal[dim];但是,我遇到了语法错误。什么是正确的语法(如果可能的话)? 最佳答案 将struct关键字替换为cppclass关键字。这应该会有所帮助。cdefexternfrom"Lib.h"namespace"LIB":

c++ - 使用 cython 包装 c++ 结构模板

我正在尝试访问结构templatestructData{doubleX[dim];doubleVal[dim];};在赛通中。我猜正确的语法应该是这样的:cdefexternfrom"Lib.h"namespace"LIB":cdefstructData[intdim]:doubleX[dim];doubleVal[dim];但是,我遇到了语法错误。什么是正确的语法(如果可能的话)? 最佳答案 将struct关键字替换为cppclass关键字。这应该会有所帮助。cdefexternfrom"Lib.h"namespace"LIB":