Distribuir un paquete de Python con una biblioteca compartida dinámica comstackda

¿Cómo empaquetar un módulo de Python junto con una biblioteca .so precomstackda? Específicamente, ¿cómo escribo setup.py para que cuando haga esto en Python?

 >>> import top_secret_wrapper 

¿Puede encontrar fácilmente top_secret.so sin tener que configurar LD_LIBRARY_PATH ?

En mi entorno de desarrollo de módulos, tengo la siguiente estructura de archivos:

 . ├── top_secret_wrapper │  ├── top_secret.so │  └── __init__.py └── setup.py 

Dentro de __init__.py , tengo algo como:

 import top_secret 

Aquí está mi setup.py

 from setuptools import setup, Extension setup( name = 'top_secret_wrapper', version = '0.1', description = 'A Python wrapper for a top secret algorithm', url = None, author = 'James Bond', author_email = 'James.Bond.007@mi6.org', license = 'Spy Game License', zip_safe = True, ) 

Estoy seguro de que a mi setup.py le falta una configuración donde especifique la ubicación de top_secret.so , aunque no estoy seguro de cómo hacerlo.

Si esa biblioteca también debería comstackrse durante la instalación, puede describir esto como un módulo de extensión . Si solo quieres enviarlo, agrégalo como package_data

Como se menciona en setupscript.html # installation-package-data :

 setup( ... package_data={'top_secret_wrapper': ['top_secret.so']}, ) 

Lo que terminé haciendo es:

 setup( name='py_my_lib', version=version, # specified elsewhere packages=[''], package_dir={'': '.'}, package_data={'': ['py_my_lib.so']}, ) 

De esta manera puedo importar la biblioteca por su nombre, y no tengo otro nivel de anidamiento:

 import py_my_lib 

y no

 from py_my_lib_wrapper import py_my_lib