2017-09-01 213 views
-1

我有這個C SDK,我正在創建一個Python擴展。 C SDK文檔說,它預計在其工作目錄中有一個ffmpeg可執行文件。我目前的項目結構是:Python C擴展與可執行依賴關係

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一起提供。

回答

0

我覺得package_data可以用於此:

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

package_data是一個字典。密鑰是子模塊名稱;一個空字符串表示包的根。值是列出命名子模塊的文件模式的列表。請參閱docs