2010-11-23 2 views
23

(또는, "PyPy/RPython는 파이썬 런타임을 요구하지 않고/컴파일 C/C++ 에 파이썬을 변환하는 데 사용 할 수 있습니까?")PyPy/RPython을 사용하여 작은 독립형 실행 파일을 생성 할 수 있습니까?

내가 그 RPython과 파이썬 그 실행에 PyPy을 이해하려고 노력 해요 그리고 그것의 컴파일 및 번역, 그리고 다소 실패했습니다.

저는 가상의 Python 프로젝트 (Windows 용)가 있습니다. 나는 UP2 이후에 py2exe를 사용하는 몇 메가 바이트가 아닌 100 킬로바이트 (O.N.O.)의 크기로 크기를 줄이고 싶습니다. 어떤 방식 으로든 Python 을 사용하여 Python26.dll에 의존하지 않는 독립 실행 형 실행 파일을 생성 할 수 있습니까? 가능한 경우 for과 같은 RPython 제한 사항을 준수해야합니다. 내장 유형에서만 작동하거나 전체 Python 구문입니까?

이 작업을 수행 할 수 있다면 Python의 C 모듈을 거의 사용할 수 없다는 것을 알고 있습니다.


1

는 (요청시 이후, 상황은 명확하게하고 있으며, 툴체인의이 부분은 더 명확하게 RPython보다는 PyPy로 브랜드입니다, 그것은 2010 년에 그렇게하지 않았다)

+1

이것은 거의 확실하게 원하는만큼 작은 실행 파일을 생성하지는 않습니다. 그러나 관련성이 있기 때문에 저는 cython이 독립 실행 파일을 빌드 할 수 있다고 주장 할 것이라고 생각했습니다. http://wiki.cython.org/EmbeddingCython –

+0

@Forest : Cython이 그렇게 할 수 있다는 것을 알지 못했지만 파이썬 런타임을 필요로하기 때문에 py2exe + UPX보다 작은 (또는 적어도 많은) 것을 얻지 못할 것으로 생각됩니다. –

+0

여기에 에코가 있습니까? –

답변

17

예, PyPy는 RPython 코드에서 독립 실행 형 실행 파일을 생성 할 수 있습니다. 즉, 코드 작성과 관련하여 모든 어색한 RPython 규칙을 따라야합니다. 파이썬 코드는 상자 밖에서는 거의 작동하지 않을 것이고 기존 파이썬 코드를 이식하는 것은 일반적으로 재미 있지는 않습니다. 실행 파일을 C만큼 작게 만들지는 않겠지 만, boehm GC를 사용하는 rpystone 타겟 (pypy/translator/goal에서)은 스트립 후 64 비트에서 80k입니다.

+0

고마워요. 그게 제가 알고 싶었던 대답이었습니다. 내가 묻는 것을 잊어 버린 것과 관련된 두 번째 질문은 PyPy를 통해 Windows API에 액세스 할 수 있다는 것입니다. 'ctypes.windll'이 작동 할까, 아니면 더 복잡할까요? –

+0

ctypes가 RPython에서 작동하지 않습니다. C 인터페이스가 있는데, 이것은 rffi라고 불리우며, grep은 사용법에 대해 (모듈은 그것을 사용합니다). 꽤 많은 윈도우 API가 여기저기서 노출되어 있습니다. (미안하지만 이것은 상당히 내부적 인 내용입니다.) - – fijal

+0

고마워. 내가 그것에 도달하면, 나는 한번 살펴 보겠습니다. –

관련 문제