问题标签 [python-cffi]

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 投票
2 回答
1424 浏览

python - 如何使用 cffi 导入本地库

我有一个如下所示的 test.c(在与 python 文件相同的目录中)

现在我想将它“导入”到我的 python 脚本中

使用 cffi 文档中的示例可以正常工作。

对不起,大的回溯错误......

0 投票
2 回答
6140 浏览

python - 在 Windows 上安装 python 库 cffi

如果我pip install cffi,我得到这个:

这显然是在使用 MinGW。

我也尝试在这里从轮子安装:

我收到以下奇怪的错误:

事实上,当我查看那个 (temp) pip-nkx4aq-build 目录时,我发现那里没有 setup.py。

所以,我的问题很简单,为什么会失败,我需要做什么才能在 Windows 上安装 cffi?

0 投票
2 回答
998 浏览

python - 干净地卸载共享库并使用 Python CFFI 重新开始

我正在设置并打开这样的 DLL:

如何关闭库并再次打开它?如果我做

CDefError: cannot parse ...并在尝试时再次尝试上面的代码ffi.cdef()

我已经看到了一些使用 ctypes 的示例,dlclose()但找不到 CFFI 的等价物。

谢谢。

0 投票
3 回答
25012 浏览

python - 如何 pip 安装 cairocffi?

我如何cairocffi安装pip

cairocffiPycairo 是https://github.com/SimonSapin/cairocffi的基于 CFFI 的替代品。

我正在尝试在 Ubuntu 14.04 上安装它:

我尝试使用标准 pip 命令进行安装,但我得到了这个:

我已经手动检查了权限,我意识到没有写访问权限。为什么呢?为什么 sudo 不能覆盖权限?

当我尝试sudo -H pip install cairoffi时,我得到了:

正如@MattDMo 建议的那样,我已经尝试过apt-get install libffi,但仍然没有成功:

但是libffi包管理器上没有,所以我试过了libffi-dev

它安装libffi-dev成功,但cairoffi仍未安装:

0 投票
1 回答
1031 浏览

python-2.7 - openshift python pip install cffi 失败

在 git push 到 openshift repo 之后部署应用程序时,当 requirements.txt 开始安装时出现错误。

问题是,在我的本地机器上执行时没有问题pip install cffi

同样的事情发生在pip isntall cryptographypyOpenSSL

0 投票
1 回答
1018 浏览

python - 无法在 mac os x 10.10 上使用 pip 安装 cffi

我正在尝试在 Mac OS X 10.10 上安装 cffi,需要它来进行爬虫和加密,并通过 brew 安装 pip 和 python。我已经更新了安装的命令行工具并更新了 xcode。

libffi-3.0.13 已安装。

我尝试重新链接 gcc,没有运气。我尝试使用这些标志:

这似乎相关https://trac.macports.org/ticket/43978

0 投票
1 回答
301 浏览

python - Python cffi 模块:verify() 是否需要从我的 python 代码中重新编译我想使用的整个 c 库?

假设我需要使用来自 python 代码的共享库中的一些函数,例如 libfoo.so。verify()我认为 cffi 模块可以帮助我,特别是因为如果使用该函数,它似乎支持不透明类型。

不过,我并不完全理解,文档的含义是什么

verify() [...] 是另一种选择:它不是执行 dlopen,而是生成并编译一段 C 代码。

我必须重新编译整个 libfoo.so 吗?还是只是某个部分(标题的相关部分)?如果是后者,这在依赖项、配置选项等方面的麻烦是否明显减少……?

0 投票
1 回答
383 浏览

python - 如何在 cffi 中支持 64 位指针?

我正在使用 cffi 将我的 Python 模块与 C 库接口。

我在 Linux 上一切正常,但我在 Mac OS X(Yosemite - 64 位)上遇到了困难。这是我写的一个显示问题的最小示例:

foo.h

foo.cpp

生成文件

foo.py

所以这里没有什么太花哨的:一个简单的mymalloc(size_t)函数,它充当真实函数的包装器,malloc(size_t)并在返回之前显示生成的指针。

执行foo.py(使用make run)时,我看到以下输出:

在 的情况下mymalloc(size_t),似乎 cffi 以某种方式截断/修改了指针整数值:我得到0xffffffffa0e00280而不是预期的0x7fdba0e00280. 这基本上是指针的值,但仅存储在 32 位上。malloc(size_t)然而,它具有完全相同的原型似乎可以由 cffi 正确处理并返回一个 64 位地址。

我不知道我在这里做错了什么。有人会有线索吗?

0 投票
1 回答
339 浏览

python - How can I access errno from Python's CFFI?

I'm using cffi to wrap a library that uses errno to return error values.

How can I read errno from cffi?

0 投票
1 回答
1449 浏览

python - 如何使用 Python 的 CFFI 将指针传递给 C 函数?

如何使用 Python 的 CFFI 将指针传递给 C 函数?

例如,如果我要包装的库有两个功能:

我怎样才能调用some_function传入some_callback?例如,类似:

我知道我可以用来ffi.callback(…)在回调中包装 Python 函数,但我想知道是否可以避免重复 C 函数的类型签名和诸如此类的东西。