首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Setuptools在API模式下构建CFFI

用Setuptools在API模式下构建CFFI
EN

Stack Overflow用户
提问于 2018-11-25 20:41:10
回答 1查看 556关注 0票数 0

我正在学习如何创建一个CFFI模块,并将它们打包到setuptools中。当我运行构建脚本build_foo.py时,我得到了一个API模式库,但是当我尝试pip install .时,我得到了一个pip install .模式库。

创建API模式

代码语言:javascript
复制
$> python build_foo.py
$> ls
build_foo.py  _one_cffi.cpython-36m-x86_64-linux-gnu.so
_one_cffi.c   _one_cffi.o

创建ABI模式

代码语言:javascript
复制
$> pip install .
$> ls env/bin/site-packages
cffi                                           pkg_resources
cffi-1.11.5.dist-info                          pkg_resources-0.0.0.dist-info
_cffi_backend.cpython-36m-x86_64-linux-gnu.so  __pycache__
easy_install.py                                pycparser
Foo-0.1.dist-info                              pycparser-2.19.dist-info
foopkg                                         setuptools
_one_cffi.abi3.so                              setuptools-40.6.2.dist-info
pip                                            wheel
pip-18.1.dist-info                             wheel-0.32.3.dist-info

文件

build_foo.py

代码语言:javascript
复制
#!/usr/bin/env python3

import cffi

ffi = cffi.FFI()
ffi.cdef("int get_one();")
ffi.set_source("_one_cffi",
"""
int get_one() {
    return 1;
}

"""
)

if __name__ == '__main__':
    ffi.compile(verbose=True)

setup.py

代码语言:javascript
复制
from setuptools import setup
setup(
    name = 'Foo',
    version = '0.1',
    packages = ['foopkg'],
    cffi_modules=["foopkg/build_foo.py:ffi"],
    install_requires = ['cffi']
)
EN

回答 1

Stack Overflow用户

发布于 2019-08-18 21:42:25

我认为以abi3.so结尾的文件名与PEP 425 abi标签有关,而不是关于如何使用CFFI生成绑定的ABI模式选项。据我所知,cffi_module安装没有将任何特定于平台的信息添加到共享对象文件中,但我认为调用foopkgget_one()代码仍然可以以API模式访问get_one()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53471742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档