2012-10-04 35 views
5

Tôi cố gắng để chạy một lớp Python qua C# .NET sử dụng IronPython, một vài module nhập khẩu bởi lớp Python là:nhập đun Python qua C# .NET sử dụng IronPython

import collections 
import nltk.classify.util 

Để nhập khẩu những khi chạy IronPython, tôi đang sử dụng GetSearchPath bộ sưu tập của ScriptEngine để thêm đường dẫn đến vị trí của thư viện Python, như vậy:

ICollection<string> paths = pyEngine.GetSearchPaths(); 
string dir = @"C:\Python27\Lib\"; 
paths.Add(dir); 
string dir2 = @"C:\Python27\Lib\site-packages\nltk\classify\"; 
paths.Add(dir2); 
pyEngine.SetSearchPaths(paths); 

này có vẻ chạy tốt cho bộ sưu tập Module, nhưng không phải là nltk.classify.util, và tôi nhận được lỗi sau khi gọi Execute method của ScriptEngine:

Không mô-đun tên nltk.classify.util

Ngay cả tho mô-đun util sống trong đường dẫn được chỉ định ở trên. Tôi lấy nó vấn đề đã làm với cách nhập khẩu được quy định trong lớp Python ('.' Delimited), chỉ cần không chắc chắn làm thế nào để giải quyết nó. Bất kỳ ý tưởng nào đang xảy ra sai?

Trả lời

8

Python sử dụng cấu trúc của một tên gói để tìm kiếm một mô-đun, vì vậy nếu bạn yêu cầu nltk.classify.util nó sẽ tìm kiếm nltk\classify\util.py bắt đầu từ mỗi thư mục trong đường dẫn tìm kiếm.

Vì vậy, trong ví dụ của bạn, bạn muốn thay đổi dir2 như sau:

string dir2 = @"C:\Python27\Lib\site-packages"; 
Các vấn đề liên quan