2016-04-27 14 views
7

Vedo che PyCharm supports Cython.Installazione di PyCharm per Cython

Potrei sempre compilare ed eseguire in terminale, ma mi chiedo se c'è un modo per farlo in PyCharm. Nel link si dice: "La compilazione avviene utilizzando strumenti esterni: i sistemi di build preferiti (Makefile, setup.py, ecc.) Devono essere configurati come strumenti esterni." Mi sto chiedendo come fare questa configurazione. Un piccolo esempio di Hello World in PyCharm che usa Cython sarebbe molto apprezzato.

Grazie

risposta

8

rispondere alla mia domanda proprio qui:

Diciamo che abbiamo la funzione di fib.pyx:

def fib(n): 
"""Print the Fibonacci series up to n.""" 
a, b = 0, 1 
while b < n: 
    print b, 
    a, b = b, a + b 

Ci sono due modi per compilare ed eseguire questo

  1. Utilizzare un file di installazione. Rendere il file setup.py:

    from distutils.core import setup 
    from Cython.Build import cythonize 
    
    ext_options = {"compiler_directives": {"profile": True}, "annotate": True} 
    setup(
        ext_modules = cythonize("fib.pyx", **ext_options) 
    ) 
    

    Il ext_options è incluso qui per generare il file html con annotazioni. Per eseguire questo file devi andare su Strumenti -> Esegui setup.py Task. Quindi digitare build_ext come nome attività e quando richiesto per Riga di comando tipo di input --inplace. I file fib.c, fib.o e il file eseguibile fib.so viene generato. Viene inoltre creato il file di annotazione fib.html.

    Ora, il seguente codice dovrebbe funzionare in qualsiasi tipo di file python, ad esempio main.py:

    import fib 
    fib.fib(2000) 
    
  2. Il modo più semplice per andare è quello di utilizzare pyximport. Non è necessario alcun file di installazione. Si noti che questo può essere utilizzato solo se "your module doesn’t require any extra C libraries or a special build setup." Il file main.py dovrebbe apparire così:

    import pyximport; pyximport.install() 
    import fib 
    fib.fib(2000) 
    

    Per quanto ho capito la stessa compilazione del codice avviene anche se il fib.c, fib.o e fib.so i file non finiscono nella cartella del progetto. Il codice fib.html non viene generato, ma può essere risolto aggiungendo due righe al file principale. Con le nuove linee main.py è ora:

    import pyximport; pyximport.install() 
    import subprocess 
    subprocess.call(["cython", "-a", "fib.pyx"]) 
    import fib 
    fib.fib(2000) 
    
+0

In aggiunta a queste istruzioni, dobbiamo anche garantire che PyCharm sa che il pacchetto fodler contiene un modulo Python, altrimenti l'ignorerà . Vedi https://stackoverflow.com/questions/40203488/pycharm-does-not-recognize-cython-modules-located-in-path – Contango