/ / Python / Cython foo.py -> foo.so - python, cython

Python / Cython foo.py -> foo.so - python, cython

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ď č. 1

naš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.