我正在尝试使用IronPython 2.7在.NET 4.0上使用IronPython执行此方法。我正在使用Windows 7
import os
import re
import nltk
import urllib
import xapian
import sys
def getData(url):
try:
html = urllib.urlopen(url)
text = html.read()
html.close()
except:
return "error"
try:
return nltk.clean_html(text) #takes the tokens
except:
return text
C#CODE:
public static object Execute()
{
string scriptPath = "Calculator.py";
ScriptEngine engine = Python.CreateEngine();
engine.SetSearchPaths(new string[] { "c:\\Python26\\lib","c:\\Python26\\lib\\site-packages",
"C:\\IronPython-2.7\\Lib\\site-packages","C:\\IronPython-2.7\\Lib"});
ScriptSource source = engine.CreateScriptSourceFromFile(scriptPath);
ScriptScope scope = engine.CreateScope();
ObjectOperations op = engine.Operations;
source.Execute(scope);
dynamic Calculator = scope.GetVariable("Calculator");
dynamic calc = Calculator();
return calc.getData("http://www.wowebook.com/dot-net/ironpython-in-action.html");
}
有人能告诉我我做错了什么吗?我一直认为我没有fcntl模块
答案 0 :(得分:3)
fcntl isn't really一个windows native(平台:Unix)所以你可能运气不好,the following StackOverflow thread可能(或可能没有)帮助......
答案 1 :(得分:1)
当我遇到这个问题时,结果问题是我在搜索路径中只有CPython库(我以前在CPython中安装了NLTK)而不是IronPython库。
在我的C#代码中,我现在有类似
的内容 engine.SetSearchPaths(new string[] {"C:\\Program Files\\IronPython 2.7\\Lib"
,"C:\\Python27\\Lib"
,"C:\\Python27\\Lib\\site-packages"
});
当我在这个问题上摸不着头脑时,我注意到我不小心输入了2.7.1作为我的IronPython路径,即。一个不存在的目录。哦,我只是注意到OP在它们的源代码中有一个类似的搜索路径条目,也许也可能是搜索路径的顺序?
对于处于类似职位的人有用的线索:我注意到我的NLTK使用代码在从ipy.exe加载时工作正常,所以不是可移植性问题......(并且NLTK源不包含任何地方的字符串fcntl)
答案 2 :(得分:0)
我认为到目前为止,最简单的解决方案是切换到CPython。我认为它不会比你现有的解决方案更集成,你可以避免所有令人头疼的问题。
答案 3 :(得分:0)
import sys
sys.path.append("X:\Python27x64")
sys.path.append("X:\Python27x64\DLLs")
sys.path.append("X:\Python27x64\Lib")
sys.path.append("X:\Python27x64\Lib\site-packages")
sys.platform = "win32"
import nltk
答案 4 :(得分:0)
遇到了完全相同的问题,直到我订购了导入并且sys.path.append完全像这样才起作用:
sys.path.append("C:\\Program Files\\IronPython 2.7\\Lib")
sys.path.append("C:\\Program Files\\IronPython 2.7\\Lib\\site-packages")
sys.path.append("C:\\Python27\\Lib")
sys.path.append("C:\\Python27\\Lib\\site-packages")