我有这个 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/