问题标签 [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 投票
1 回答
1156 浏览

python - CFFI - 在 ABI 模式下是否可以对 C 代码进行 Python 回调?

我需要为 C 代码提供回调。基本上,我需要这个工作:

在 C 中:

在 Python 中:

添加@ffi_builder.def_extern()py_callback抛出异常:ffi.def_extern() is only available on API-mode FFI objects.

那么在 ABI 模式下是否有可能呢?

0 投票
1 回答
221 浏览

python - 使用 CFFI 从 Python 调用带有 OpenMP 的 C 函数

我正在使用 CFFI 从 Python 中使用 OpenMP 调用 C 函数。我的代码在我的一台计算机上运行,​​但在另一台计算机上运行非常相似。

错误是

我正在使用 Python 3.5(最新的 Anaconda 发行版)和 TDM-GCC 5.1.0。测试在两台计算机上运行。什么可以解释不同的行为?

0 投票
1 回答
1617 浏览

python - 将标志添加到 cffi 编译过程

我使用 cffi 模块来包装一个简单的 c 代码。问题是,我需要添加一个标志以使其编译(std=c99)。目前我有类似的东西:

问题是,cffi 自己调用 gcc,我想将 std=c99 添加到它调用 gcc 的标志中。我缺少任何参数吗?

(注意:我可以更改 gcc 命令本身或运行 cffi 自己使用的 gcc 命令,我想知道我是否缺少一些正确的方法)

0 投票
0 回答
724 浏览

python - pip安装pyopenssl时权限被拒绝错误

当我试图强制重新安装pyopenssl时,我在尝试安装时遇到了以下错误pycparser。我使用以下命令在带有 Python 2.7 的 Windows 7 64 位上执行此操作:

这是回溯:

这是我注意到的:

  • 它只发生在_cffi_backend.pyd- 其他软件包安装和卸载正常。
  • 我可以pip uninstall cffi重新安装它,但只要它存在,就会出现_cffi_backend.pyd权限错误。这意味着任何调用cffi(例如pyopenssl)的安装都将失败。

这是我尝试过的:

  1. 卸载重装cffi:没有效果
  2. 成功使用icalcs设置_cffi_backend.pyd为完全访问,大家:没有效果
  3. 调用:没有pip效果python -m pip install pyopenssl --ignore-installed
  4. 安装前关闭所有应用程序并检查正在运行的进程:没有效果
  5. 重启。大多数情况下都是巫毒教,但只是为了彻底:没有效果
0 投票
1 回答
701 浏览

python-2.7 - 在 Solaris 10 上从源代码安装 Python 加密包

我正在尝试在 Solaris 10 系统上安装 Python加密包。我已经从我的主目录中的源代码构建了 Python 2.7 和 libffi。我可以通过指定 libffi 的路径来构建 cffi:

但是,构建加密的尝试失败并出现以下错误:

我已经设置LD_LIBRARY_PATH/export/home/ef/libffi/lib.

我在编译 cffi 时注意到以下警告 - 它可能相关吗?

我该如何解决这个问题?我在网上发现的所有类似问题都通过安装相关的操作系统包(例如 sudo apt-get install build-essential libssl-dev libffi-dev python-dev)得到修复。OpenCSW 不是一个选项。

0 投票
1 回答
1883 浏览

python - Flask-Bcrypt - AttributeError: 'module' 对象没有属性 'ffi' - 部署到 AWS Beanstalk

我有一个 Flask 应用程序,它已部署到 Ubuntu 实例,并且在我的本地 virtualenv 中正常工作。问题在于 Flask-Bcrypt,它扩展了 Bcrypt。当我部署到 AWS Beanstalk 时,我收到以下错误:

查看Bcrypt 源代码,我可以看到它FFI是从以下位置导入的cffi

正如您从下面的 pip 输出中看到的那样,cffi==1.9.1已安装。但是,如果我运行,which cffi我可以看到:

系统信息:64bit Amazon Linux 2016.09 v2.3.0 running Python 2.7

这些软件包安装在eb deploy

我在这里看到了这个问题,这表明存在包冲突。但是,我没有py-bcrypt安装。

pip freeze返回以下内容:

非常感谢任何帮助。

0 投票
1 回答
1644 浏览

c++ - 将 Python CFFI 与 .lib 以及一堆 .dll 和 .h 文件一起使用

我需要为专有库编写 Python2 包装器,由几个 .h 文件(我做了一个大)、一堆 .dll 和一个 .lib 文件来链接所有这些东西。

我认为我需要 API 级别,因为 .h 文件中的所有这些“typedef”

创建包装器的脚本:build_wrapper.py

这运行没有错误Creating library .\Release\_wrapper.lib and object .\Release\_wrapper.exp

但是,例如,

失败

ScadAPI定义为

在 ScadWrapper.h 中

0 投票
2 回答
4590 浏览

python-2.7 - 收到此错误 *** OSError: cannot load library C:\WINDOWS\libzsfc.dll: error 0xc1

我正在尝试使用 python cffi 库加载 .dll 文件,但是当我尝试加载它时,我收到以下错误:-

我正在使用这个

但这给了我错误,我尝试了很多来解决这个问题,但它仍然是一样的,如果有人遇到同样的问题,请告诉我。

0 投票
1 回答
33 浏览

python - 如何在这个 tkinter/exec()/cffi 组合中修复这个堆栈溢出?

我有一个 Python 驱动的 DSL,我通过exec(). 此 DSL 包括通过 CFFI 进行的本机函数调用。

当调用一个只有 2 个 C 调用深度的本机函数时,我遇到了堆栈溢出(所以,你让它变得不可用!)崩溃uint16_t,每个 C 函数的堆栈上只分配了少数 s 。Python 应用程序是一个tkinterGUI,它通过 timer () 事件调用 DSL master.after(1000, self.tick),这可能会占用堆栈本身的很大一部分。

这里没有递归调用。

OS X 10.12.3,Python 3.6.0rc1(v3.6.0rc1:29a273eee9a5,2016 年 12 月 6 日,16:24:13),CFFI 1.9.1

我知道resource.setrlimit(resource.RLIMIT_STACK, (resource.RLIM_INFINITY, resource.RLIM_INFINITY)),但它需要超级用户权限。我相信这不是必需的,因为只剩下一个堆栈用于两个函数调用是不正常的。

CFFI 或 exec() 会限制被调用者的堆栈大小吗?

从 DSL 调用的函数:

exec调用代码:

苹果报告片:

(此线程真的到此结束,Apple 报告中没有其他内容)

0 投票
1 回答
186 浏览

python - 'CompiledFFI' instead of 'FFI' when including 'cairocffi'

I want to use Pango with the Cairo backend in Python 3. I chose 'cairocffi' for reasons that are not relevant here. I am trying to run the example in the documentation. It calls Pango through CFFI. The very beginning of the example

gives the following error.

I have been trying to understand the CFFI documentation, but I am completely lost. First, where is CompiledFFI documented? Second, why do not I see include, cdef, set_source methods in the FFI interface? And the main question is, what am I doing wrong?