2013-02-01 3 views
2

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"); 

내 질문

  1. 당신은 Visual Studio를 통해 닷넷 어셈블리에 표준 라이브러리를 컴파일 할 수있다?

  2. 그렇다면 Lib 폴더의 .py 코드 파일에 대한 빌드 작업은 무엇입니까?

  3. 그러면 표준 라이브러리 모듈을 가져올 때 실패하지 않도록 어셈블리를 참조하는 적절한 방법은 무엇입니까?

내가 검토 한 후 다음 IronPython: EXE compiled using pyc.py cannot import module "os"

을하지만 그것에 대해 이동하는 방법 인 경우에 실제로 IronPython을 설치하고 아주 확실하지가 없습니다. IronPython과 IronPython.StdLib를 모두 프로젝트에 직접 추가하기 위해 NUGET을 사용했습니다. IronPython.StdLib을 NUGET을 통해 직접 프로젝트에 추가 할 수 있기 때문에 생각했습니다. 그냥 컴파일하고 참조 할 수있었습니다.

답변

3

아니요, Visual Studio를 통해 컴파일 할 수 없습니다 (아직). 원한다면, download IronPython을 가지고 있고 명령 행에서 pyc.py를 사용하면된다.

결국 stdlib의 미리 압축 된 버전과 미리 컴파일 된 버전을위한 NuGet 패키지를 갖게 될 것이지만 나는 아직 그것에 도달하지 못했습니다.

+2

이 답변을 올린 이후로이 문제가 변경 되었습니까? 저는 Visual Studio Extension을 빌드하고 stdlib를 어셈블리에 임베드해야하므로 pyc.py는 라이브러리 대신 실행 파일을 빌드하는 데 많은 도움이되지 않습니다. – Spook