Domanda

Come faccio a compilare un modulo C-Python tale che è locale a un altro? Per esempio. Se ho un modulo denominato "bar" e un altro modulo denominato "mymodule", come si fa compilo "bar" in modo che importata tramite "mymodule.bar importazione"?

(scusate se questo è mal formulata, non ero sicuro di quello che il termine corretto perché era.)

Ho provato quanto segue in setup.py, ma non sembra funzionare:

from distutils.core import setup, Extension

setup(name='mymodule',
      version='1.0',
      author='Me',
      ext_modules=[Extension('mymodule', ['mymodule-module.c']),
                   Extension('bar', ['bar-module.c'])])

Modifica

Grazie Alex. Quindi questo è quello che ho finito per usare:

from distutils.core import setup, Extension

PACKAGE_NAME = 'mymodule'

setup(name=PACKAGE_NAME,
      version='1.0',
      author='Me',
      packages=[PACKAGE_NAME],
      ext_package=PACKAGE_NAME
      ext_modules=[Extension('foo', ['mymodule-foo-module.c']),
                   Extension('bar', ['mymodule-bar-module.c'])])

con ovviamente una cartella denominata "mymodule" contenente __init__.py.

È stato utile?

Soluzione

Le istruzioni sono qui :

  

Extension ( 'foo', [ 'src / foo1.c',   'Src / foo2.c'])

     

descrive un'estensione che vive in   package principale, mentre

     

Extension ( 'pkg.foo', [ 'src / foo1.c',   'Src / foo2.c'])

     

descrive la stessa estensione nella   pacchetto pkg. I file di origine e   risultante codice oggetto sono identici a   entrambi i casi; l'unica differenza è   dove nel file system (e quindi   dove la gerarchia dello spazio dei nomi di Python)   l'estensione risultante vive.

Ricordate, un pacchetto è sempre una directory (o file zip) contenente un __init__ modulo. Per creare un modulo che è un corpo del pacchetto, che il modulo sarà chiamato __init__ e vivono sotto la directory del pacchetto (o file zip). Non ho mai fatto che in C; se non funziona per farlo direttamente, il nome del modulo di esempio _init invece, e in __init__.py fare from _init import *. (uno dei pochissimi usi legittimi delle from ... import *; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top