Нет модуля с именем fcntl - PullRequest
       18

Нет модуля с именем fcntl

2 голосов
/ 04 апреля 2011

Я пытаюсь выполнить этот метод с IronPython на .NET 4.0, используя IronPython 2.7.Я использую 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

Ответы [ 4 ]

3 голосов
/ 04 апреля 2011

fcntl на самом деле не является родным для Windows (платформа: Unix), так что вам может не повезти, следующий поток StackOverflow может быть (или не может) быть полезным .. .

1 голос
/ 19 апреля 2013

Когда я столкнулся с этим, проблема оказалась в том, что у меня в пути поиска были только мои библиотеки CPython (ранее я устанавливал NLTK в CPython), а не 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)

0 голосов
/ 30 мая 2013
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
0 голосов
/ 04 апреля 2011

Я думаю, что самым простым решением было бы перейти на CPython. Я не думаю, что оно будет менее интегрированным, чем ваше существующее решение, и вы избежите всех проблем с отсутствующими модулями.

...