StdLib의 컴파일 된 버전을 사용할 수 없습니다.IronPython.StdLib을 구성하는 방법 2.7.3
빈 스튜디오 프로젝트 (StdLib라고 함)를 작성하고 모든 프로젝트 (.py 스크립트로 Lib 폴더를 만드는 IronPython.StdLib)를로드 한 NUGET을 사용했습니다. 이 파일의 빌드 동작은 기본적으로 "content"로 설정되어 있지만 해당 설정과 "embedded resource"로 컴파일하려고했습니다. 내 평 스크립트
나는이 :
import clr
clr.AddReference("StdLib")
import os
는이 총회를 찾지 만 오류 "os 모듈을 찾을 수 없습니다"가 발생합니다.
표준 라이브러리 파일을 빌드 폴더의 느슨한 파일로 패키징하고 다음을 수행하면 작동합니다.
var runtime = Python.CreateRuntime();
var engine = Python.GetEngine(runtime);
engine.SetSearchPaths(new string[] { Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location) + @"\Lib" });
////load the script
dynamic script = runtime.UseFile(ParserScriptPath);
//execute the script
var result = script.main("result");
내 질문
당신은 Visual Studio를 통해 닷넷 어셈블리에 표준 라이브러리를 컴파일 할 수있다?
그렇다면 Lib 폴더의 .py 코드 파일에 대한 빌드 작업은 무엇입니까?
그러면 표준 라이브러리 모듈을 가져올 때 실패하지 않도록 어셈블리를 참조하는 적절한 방법은 무엇입니까?
내가 검토 한 후 다음 IronPython: EXE compiled using pyc.py cannot import module "os"
을하지만 그것에 대해 이동하는 방법 인 경우에 실제로 IronPython을 설치하고 아주 확실하지가 없습니다. IronPython과 IronPython.StdLib를 모두 프로젝트에 직접 추가하기 위해 NUGET을 사용했습니다. IronPython.StdLib을 NUGET을 통해 직접 프로젝트에 추가 할 수 있기 때문에 생각했습니다. 그냥 컴파일하고 참조 할 수있었습니다.
이 답변을 올린 이후로이 문제가 변경 되었습니까? 저는 Visual Studio Extension을 빌드하고 stdlib를 어셈블리에 임베드해야하므로 pyc.py는 라이브러리 대신 실행 파일을 빌드하는 데 많은 도움이되지 않습니다. – Spook