具有可执行依赖项的 Python C 扩展

标签 python c setuptools distutils python-extensions

我有这个 C SDK,我正在为其创建 Python 扩展。 C SDK 文档表示,它需要在其工作目录中有一个 ffmpeg 可执行文件。我当前的项目结构是:

my-extension/
    include/
        sdk-file.h
        sdk-file-2.h
    lib/
        sdk-lib.so
        sdk-lib2.so
    src/
        my-extension.c
    setup.py

我的setup.py:

from setuptools import setup
from setuptools.extension import Extension

setup(
    name='my_extension',
    version='develop',
    ext_modules=[Extension(
        'my_extension',
        ['src/my-extension.c'],
        include_dirs=['include'],
        library_dirs=['lib'],
        libraries=['sdk-lib', 'sdk-lib2',],
        runtime_library_dirs=['lib'],
    )]
)

我的问题是,如何将可执行依赖项(在本例中为 ffmpeg)与我的扩展打包在一起?可执行文件随 SDK 一起提供。

最佳答案

我认为package_data可以用于此:

setup(
    …
    package_data={'': ['ffmpeg']},
    …
)

package_data 是一个字典。键是子模块名称;空字符串表示包的根。值是列出命名子模块的文件模式的列表。请参阅docs .

关于具有可执行依赖项的 Python C 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45998027/

相关文章:

python - 通过 Pip 从 setup.py 打印一条消息

python - `pandas.DataFrame.to_html()` 没有 `table border` 和 `tr style`

python - 如何使用 FastAPI 在查询参数名称中允许使用连字符 (-)?

无法在 Windows 10 上编译 Cairo C 代码

c - 这是 `makefile` 在 C 中的正确实现吗?

c - PostgreSQL 使用 epoll_wait 异步连接

python setuptools编译fortran代码并创建一个入口点

python - 使用 setuptools, namespace 包 __init__.py 文件何时消失?

python - 在Python中模拟多个给定多个概率的最快方法?

python - 如何在Docker镜像中编辑库包