setup python3 example python python-3.x distutils

python3 - Distribuir el módulo de extensión de Python precompilado con distutils



python setuptools python3 (3)

Intente usar package_data: http://docs.python.org/distutils/setupscript#installing-package-data

Una rápida hoy: estoy aprendiendo las bibliotecas de entradas y salidas de Pythons, y me gustaría incluir un módulo de extensión de python (.pyd) en mi paquete. Sé que, por supuesto, la forma recomendada es hacer que los compiladores de datos compilen la extensión en el momento en que se crea el paquete, pero esta es una extensión bastante compleja que abarca muchos archivos de origen y hace referencia a varias bibliotecas externas, por lo que se requerirá una reproducción significativa para obtener todo. trabajando bien

Mientras tanto, tengo una versión de trabajo conocida de la extensión que sale de Visual Studio y me gustaría usarla en el instalador como una solución temporal que me permita concentrarme en otros problemas. Sin embargo, no puedo especificarlo como un módulo, ya que aparentemente deben tener una extensión .py explícita. ¿Cómo podría indicar en mi setup.py que deseo incluir un módulo de extensión precompilado?

(Python 3.1, si importa)



Resolví esto anulando Extension.build_extension:

setup_args = { ... } if platform.system() == ''Windows'': class my_build_ext(build_ext): def build_extension(self, ext): '''''' Copies the already-compiled pyd '''''' import shutil import os.path try: os.makedirs(os.path.dirname(self.get_ext_fullpath(ext.name))) except WindowsError, e: if e.winerror != 183: # already exists raise shutil.copyfile(os.path.join(this_dir, r''../../bin/Python%d%d/my.pyd'' % sys.version_info[0:2]), self.get_ext_fullpath(ext.name)) setup_args[''cmdclass''] = {''build_ext'': my_build_ext } setup(**setup_args)