Jednoduchá otázka google nemohla odpovedať:
Používam nástroj Cython na konvertovanie častí mojich knižnícna rozšírenie modulov pomocou skriptu easycython. Keď tak urobím, v podstate sú v jednom priečinku súbory foo.so a foo.py. Teraz, ak importovať triedu do iného súboru, bude python automaticky používať foo.so alebo budem musieť premenovať foo.py tak, aby bol python nútený používať foo.so? Vopred ďakujem
odpovede:
0 pre odpoveď č. 1našiel odpoveď @ http://cython.readthedocs.io/en/latest/src/userguide/source_files_and_compilation.html
Pyximport
Cython je kompilátor. Preto je prirodzené, že ľudia majú tendenciu prejsť cyklom úprav / kompilácie / testovania pomocou modulov Cythonu. pyximport zjednodušuje tento proces vykonaním kroku "kompilácie" v prípade potreby počas importu. Napríklad, ak napíšete modul Cython s názvom foo.pyx, pomocou Pyximport ho môžete importovať do bežného modulu Python, ako je tento:
import pyximport; pyximport.install () import foo
Ak to urobíte, výsledkom bude kompilácia foo.pyx (s príslušnými výnimkami, ak sa v ňom vyskytne chyba).
0 pre odpoveď č. 2
Na .so
musí byť nainštalovaný ako rozširujúci modul pre jeho správne používanie. Ak importujete z lokálneho adresára, .py
prepíše.
Záleží na tom, čo setup.py
inštaluje, ak to bude aj v prípade inštalácie modulu.
Stručne povedané, a setup.py
pre kód rozšírenia by mal obsahovať aspoň:
from setuptools import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("foo.py")
)
vidieť dokumentácia.