问题标签 [cythonize]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
101 浏览

python - windows下如何查看cython的pyxinport编译情况?

我正在 Windows 上开发 Cython 项目。我在我的包目录中创建了 2 个文件:

  • module1.py
  • module1.pyx

运行以下代码后,调用pyximport

编译后我找不到 .pyd 或 .c 文件。

在 Windows 上,这些文件位于何处?如何检查编译是否产生任何错误?

0 投票
1 回答
4751 浏览

python - 如何将装饰器应用于 Cython cpdef 函数

我最近一直在玩 Cython,在将装饰器应用于 Cython 函数时遇到了这个错误

Cdef functions/classes cannot take arbitrary decorators

这是我正在修改的代码:

该错误表明 cdef 函数只能采用某些装饰器。是否可以编写可以应用于 cdef 函数的自己的装饰器?


编辑:对于未来的读者:

g = plus_one(_g)@DavidW 的回答中提到的技巧有效。它不适用于递归。例如,fib = memoize(fib)在我的示例代码中执行的操作不会记住对 fib 的递归调用,尽管它确实会记住顶级调用。即调用fib(5)将记住调用的结果fib(5),但它不会记住递归调用(即fib(4), fib(3), fib(2), fib(1)

正如@DavidW 指出的那样,cdef, cpdef函数在编译时完全确定;装饰是运行时的事情,不会更新实际功能。

0 投票
0 回答
304 浏览

python - Cython pxd "cimport XXX as YYY" 导致 "YYY.pxd not found",即使 "cimport XXX" 有效

标题几乎说明了一切。

我正在尝试使用 cimport 一个模块

然后使用“someModuleBase”别名

但这会导致错误

我不知道 Cython 为什么要寻找这个 pxd 文件。如果我将别名重命名为与它工作的文件相同的名称,例如

要不就

并适当地使用它们。但这当然不是重点,我认为它应该以任何一种方式工作。我尝试搜索 SO 和谷歌,但只找到了我认为我没有犯的明显错误的解决方案。

-------------------------------------------------- ----------------------

附加信息:

我的文件夹结构看起来像这样

安装程序.py 文件

0 投票
0 回答
253 浏览

python - 将 .pyx 编译为 .pyd,包括相对导入

这是我学习sklearn的问题。sklearn 中有一些 cython 代码,例如:

包含_test.pyx代码:

现在我想通过使用 Cython 来遵守_test.pyx_test.pyd但它不起作用,错误是:

这是我的编译代码cythonbuild.py

然后我在cmd中运行命令:

我该如何解决这个问题?

0 投票
2 回答
1112 浏览

python - 如何获取 pyd 文件的路径,也就是相当于 __file__

我有一个文件package.py,我正在尝试打包到 package.pyd. 我有以下声明package.py

当我运行时它工作正常,package.py但是当我导入package.pyd另一个文件时,wrapper.py我收到以下错误消息

如何获取 .pyd 文件的位置。还有一种方法可以检查它是作为 .pyd 还是 .py 运行。

谢谢!

0 投票
2 回答
420 浏览

python - 使用 cython 将 c++ 中的 helloworld 包装到 python 中时出错

我有以下文件:

helloworld.cpp其中包含

helloworld.pyx其中包含:

其中setup.py包含:

当我在 Ipython 中运行以下命令时,它会正确构建

但是当我尝试导入它时,我收到以下错误:

我还尝试了以下方法:

helloworld.pyx包含:

在这种情况下,当我尝试构建它时,我得到:

这意味着它被递归调用。

0 投票
1 回答
70 浏览

python - Cython 调用优化

我有一个尝试导出到 Cython 的 Python 函数。我已经测试了两个实现,但我不明白为什么第二个比第一个慢。此外,我正在寻找提高速度的方法,但我不知道如何?

基本代码

我尝试在该<CODE TO IMPROVE>部分中注入这两个代码示例:

最有效的方法

结果

效率较低

结果

0 投票
1 回答
1176 浏览

python - 从 C++ 函数 Cython 返回包含 PyObject 的复杂对象

我正在尝试使用 Cython 将一些 C++ 类和函数包装到 Python 中。到目前为止,我已经包装了 2 个类,现在我想包装一个函数。

该函数的签名是

std::map<std::string, std::vector<PyObject*>> analyze(PyObject* img, LandmarkDetector::CLNF& clnf_model, LandmarkDetector::FaceModelParameters& params);

我已经成功地包装了CLNFandFaceModelParameters类,我在包装这个analyze函数时遇到了麻烦。

该函数处理PyObject*s 因为它处理 opencv,我希望能够在语言之间轻松传递它们。我正在使用这些函数来执行cv::Point到 python 对象之间以及 python Mat 到cv::Mat.

这是我的 pyx 文件:

但是在尝试编译它时,我收到了错误消息

(指的是线map[string, vector[object]] analyze [...]

0 投票
0 回答
2847 浏览

python - Cython,如何包含“外部”模块并编译单个库?

我已经为软件创建了一个插件,这个插件是用 Python 编写的,我希望以 Mac OS 的共享库 (.so) 的形式分发它(仅限)。在我的代码中,我有许多对可能未安装在“目标”Mac 中的包的导入,我想避免让用户下载这些包,因为他们的 Mac 上没有 pip 等等......

最简单的解决方案是“构建”一个包含所有依赖项/模块的共享库,以确保用户只需下载它并激活软件中的插件,一切都会自动运行。

那可能吗?

我一直在网上进行大量搜索和阅读,我查看了 pyInstaller,但我不想创建一个独立的可执行文件,而是一个共享库,其中包含来自 Crypto、zerconf、twisted 等包的导入,等等

如果不是,有什么替代方案?

我已经尝试过 Cython,但我只将我的插件代码编译到一个库中,所以当我尝试在没有必要包的计算机中使用它时,我得到一个导入错误。

有没有办法“告诉” Cython 将代码的所有依赖项编译到一个共享库中?

正如我上面提到的 pyInstaller 可以用于独立的可执行文件,但在我的情况下,它需要是一个共享库......

非常感谢!

0 投票
1 回答
303 浏览

python - 通过 Cython 编译 Python 包

我对 cython 相当陌生,有谁知道如何通过 Cython 编译 python 项目(开销相对较低),因为我不断收到以下导入错误:

ImportError:没有名为 CythonRelated.testSource.MyClassObject 的模块

我的测试项目结构是这样的:

MainCythonTest 从 MyClassObject 模块导入类(通过

from CythonRelated.testSource.MyClassObject import myCustomObj

),初始化一个对象并调用一个对象方法。

我的 setup.py 看起来像这样:

我错过了什么?

将 setup.py 放在 CythonRelated 之外(显然在 cythonize 中更新 *.pyx 文件的相应路径)也无济于事

我的类对象.py

MainCythonTest.py