Как вы используете setuptools для создания пакета Python, содержащего библиотеки времени выполнения? - PullRequest
1 голос
/ 02 марта 2020

Справочная информация:

Я использовал SWIG для разработки оболочки Python для библиотеки C / C ++.

Теперь мне нужно использовать setuptools упаковать проект для распространения. Пакет должен включать сгенерированное SWIG расширение C и все зависимости DLL. Моя директория проекта выглядит следующим образом:

project_directory/
  |
  --- foo_mod/
  |      |
  |      --- __init__.py
  |
  --- libs/
  |    |
  |    --- lib_a.dll
  |    --- lib_b.dll
  |
  --- core.py (generated by SWIG)
  --- core_wrap.cxx (generated by SWIG)
  --- core_wrap.h
  --- setup.py

Что я пробовал:

from setuptools import setup, find_packages, Extension

application_module = Extension(
    '_core',
)

setup(
    name='foo_mod',
    version='0.1',
    author="My Name",
    email="my.name@company.com",
    description="""Simple example""",
    ext_modules=[application_module],
    packages=find_packages(),
    package_data={
        "" : ['libs/*.dll']
    },
    py_modules=['core'],
    python_requires='>=3.6')

Команда для создания расширения:

PS > python setup.py build_ext --build-lib .\foo_mod

После этой команды расширение python _core.pyd записывается в foo_mod\.

Команда для сборки пакета:

PS > python setup.py sdist bdist_wheel

Проблема: Расширение _core.pyd и библиотеки не включены в колесо.

Вопрос: Как правильно включить зависимости библиотеки в пакет?

...