【问题标题】:Python C extension with executable dependency具有可执行依赖项的 Python C 扩展
【发布时间】:2018-02-10 09:19:06
【问题描述】:

我有这个 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 提供。

【问题讨论】:

    标签: python c setuptools distutils python-extensions


    【解决方案1】:

    我认为package_data可以用于此:

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-22
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 2017-08-22
      • 2011-04-14
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多