2015-09-11 37 views
5

.NET Framework üzerinde WPF kullanarak bir GUI oluşturuyorum. C# kullanarak python komut dosyasını (numpy, scipy gibi modülleri kullanan) çalıştırmak istiyorum. Şimdi iki seçeneğim var.Python modüllerini DLL dosyasına dönüştürün

  1. Süreci "python.exe" ve
  2. Yöntem 1. kullanma IronPython

kullanma "filename.py" gibi gerekli parametreler geçen p = new Process();// olduğu hemen hemen basit ama Bu Uygulamayı dağıtırsam, Son Kullanıcım, Uygulamada benim tarafımdan belirtilen yoldaki bu python modüllerine sahip olmalıdır. Yöntemini Kullanma # 2 Bu python modülleriyle ilgili sorunlarla karşılaşıyorum çünkü IronPython ile gelmiyorlar ve bu modüllerin DLL dosyalarına ihtiyacım var. Yani numpy, scipy gibi Python Modüllerini DLL dosyalarına dönüştürmenin herhangi bir yolu var mı?

cevap

1

Python dosyalarını dll olanlara dönüştürmek için clr.CompileModules kullanabilirsiniz. Daha sonra böyle bir şey yaparak dll bir başvuru ekleyebilir

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) 

: Böyle bir şey yaparak tek dll içine tüm dosyaları ekleyebilirsiniz

import clr 
import sys 

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

Ben ancak yok Bu dll içinde fonksiyonlara nasıl erişileceğini bilmek. this'a göre, import moduleName yaparak içe aktarabilirsiniz. Bu benim için işe yaramıyor.

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

İlgili konular