2015-09-11 11 views
5

Sto costruendo una GUI usando WPF su .NET Framework. Voglio eseguire script python (che usa moduli come numpy, scipy, ecc.) Usando C#. Ora ho due opzioni.Convertire i moduli python in file DLL

  1. processo p = new Process();// passando i parametri necessari come "python.exe" e "filename.py"
  2. Utilizzando IronPython

Utilizzando Metodo # 1 è praticamente più semplice ma Se distribuisco questa applicazione, il mio utente finale deve avere quei moduli python nel percorso specificato da me nella mia applicazione. Utilizzo del metodo n. Ho riscontrato problemi con questi moduli Python perché non sono dotati di IronPython e ho bisogno di file DLL di tali moduli. Quindi c'è un modo per convertire i moduli Python come numpy, scipy in file DLL?

risposta

1

È possibile utilizzare clr.CompileModules per trasformare i file python in dll. È possibile aggiungere tutti i file in una singola DLL facendo qualcosa di simile a questo:

from System import IO 
from System.IO.Path import Combine 

def walk(folder): 
    for file in IO.Directory.GetFiles(folder): 
    yield file 
    for folder in IO.Directory.GetDirectories(folder): 
    for file in walk(folder): yield file 

folder = IO.Path.GetDirectoryName(__file__) 
all_files = list(walk(Combine(folder, 'moduleName'))) 

import clr 
clr.CompileModules(Combine(folder, "myDll.dll"), *all_files) 

È possibile quindi aggiungere un riferimento alla DLL facendo qualcosa di simile a questo:

import clr 
import sys 

sys.path.append(r"C:\Path\To\Dll") 
clr.AddReference("myDll.dll") 

non lo faccio comunque sapere come accedere alle funzioni all'interno di quella DLL. Secondo this, è possibile importarlo facendo import moduleName. Questo non funziona per me però.

Fonti: [add files to single dll][reference dll]

Problemi correlati