2016-04-28 21 views
5

Sto creando un progetto che utilizza Python OpenCV. La mia elaborazione delle immagini è un po 'lenta, quindi ho pensato di poter rendere il codice più veloce creando un file .pyd (l'ho letto da qualche parte).Come creare un file .pyd?

Sono in grado di creare un file .c utilizzando Cython, ma come creare un .pyd? Mentre sono una specie di .dll, dovrei fare prima un .dll e convertirlo? E penso che non siano indipendenti dalla piattaforma, quali sono gli equivalenti su Unix?

Grazie per qualsiasi aiuto!

risposta

3

È necessario eseguire un file setup.py in un terminale. Questo è un esempio che utilizza numpy

try: 
    from setuptools import setup 
    from setuptools import Extension 
except ImportError: 
    from distutils.core import setup 
    from distutils.extension import Extension 

from Cython.Distutils import build_ext 
import numpy as np 

ext_modules = [Extension("my_code_cython",["my_code_cython.pyx"]), 
       Extension("another_code_cython",["another_code_cython.pyx"])] 

setup(
    name= 'Generic model class', 
    cmdclass = {'build_ext': build_ext}, 
    include_dirs = [np.get_include()], 
    ext_modules = ext_modules) 

Nel terminale (cmd in Windows) è necessario eseguire il comando

python setup.py build_ext --inplace 

E 'importante che suppongo si è installato il compilatore (Microsoft Visual Ad esempio, il pacchetto compilatore C++ per Python 2.7). Potete trovare maggiori informazioni in https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

+0

Grazie per quello, l'ho già capito :). Posso usarlo su * nix per creare file '.so' usando gcc? – linusg

+1

Sì, questo è il codice che uso su Windows e * nix (nel mio caso Ubuntu) – sebacastroh