문제

SL 앱에서 Python을 호스팅하고 있습니다. 기본적으로 나는 당신이 Python 스크립트를 통과 할 수있는 첨부 된 속성을 가지고있는 다음 요소의 잃어버린 포커스 이벤트에서 실행됩니다.

IPY 통합은 타사 수입이 필요하지 않은 한 잘 작동합니다. Programengine.importModule 및 Inline을 사용하여 Program Files Iron Python ...의 Site-Packages 폴더에 FormenCode 패키지를 사이트 패키지 폴더에 복사 한 다음 FormenCode를 프로그래밍 방식으로 가져 오려고했습니다. 각각의 경우 모듈을 찾을 수 없습니다.

DLR 호스트의 설정 코드는 다음과 같습니다.

        var setup = new ScriptRuntimeSetup();
        setup.HostType = typeof(BrowserScriptHost);
        setup.LanguageSetups.Add(Python.CreateLanguageSetup(null));
        setup.Options["SearchPaths"] = new string[] { string.Empty };

        _runtime = new ScriptRuntime(setup);
        _engine = _runtime.GetEngine("Python");
        _scope = _engine.CreateScope();
        _engine.ImportModule("formencode");

모든 도움이 감사하겠습니다.

도움이 되었습니까?

해결책

당신이 가진 DLR 호스팅 코드는 좋아 보이지만 FormenCode를 넣는 곳은 잘못되었습니다.

Program Files Iron Python의 Site-Packages 폴더에 FormenCode 패키지를 복사했습니다.

그만큼 setup.HostType = typeof(BrowserScriptHost) 라인으로 인해 IronpyThon은 "가져 오기"를 포함한 모든 파일 시스템 작업에 대해 XAP 파일을 살펴 봅니다. FormenCode.py를 호스트의 Silverlight 프로젝트에 복사하고 "Copy Local"이 "true"로 설정되어있어 Xap으로가는 길을 만들어야합니다. 그런 다음 가져 오면 작동합니다.

실버 라이트는 운영 체제 파일 시스템의 어느 위치에서나 읽을 수 없기 때문에 모든 사람의 기계에서 작동해야하므로 예상됩니다. :)

다른 팁

나는 이것을 정확하게 시도하지 않았지만, 제 3 자 어셈블리 (내 경우 Farseer Physics Engine)를 포함해야한다는 것을 알았습니다. Xap에 어셈블리를 포함시키고 app.manifest에 참조해야했습니다.

그러나 정말로 나를 붙잡은 것은 어셈블리를 강한 이름으로 언급해야한다는 것이 었습니다 (SL에서만해야 할 일은 로컬에서는 어셈블리 이름을 사용할 수있었습니다).

이것이 도움이되기를 바랍니다. 그리고 당신이 어떻게 그것을 해결하는지에 관심이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top