Domanda

rapida uno oggi: sto imparando fuori del della e nella biblioteca di pitoni Distutils, e vorrei includere un modulo di estensione python (.pyd) con il mio pacchetto. So, naturalmente, che il metodo consigliato è quello di avere distutils compilare l'estensione al momento della creazione del pacchetto, ma questa è un'estensione piuttosto complesso che copre molti file sorgente e fa riferimento a diverse librerie esterne in modo da sta andando a prendere un po 'di gioco significativo per ottenere tutto lavorare a destra.

Nel frattempo ho un noto accumulo di lavoro del prolungamento che esce di Visual Studio, e vorrei usarlo nel programma di installazione come una soluzione temporanea per permettere a me di concentrarsi su altre questioni. Non posso indicare come modulo, però, dal momento che quelle apparentemente deve avere un'estensione .py esplicito. Come potrei indicare nel mio setup.py che voglio includere un modulo di estensione pre-compilato?

(Python 3.1, se è importante)

È stato utile?

Altri suggerimenti

Ho risolto questo Extension.build_extension sovrascrivendo:

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top