2014-01-22 1 views
3

우리는 특정 Python 버전에서 실행되고 꽤 많은 모듈에 의존하는 앱 (Twisted 클래스 묶음)을 가지고 있습니다. 이 응용 프로그램은 인터넷에 액세스 할 수없는 Windows Server 컴퓨터에 배포해야합니다. 모든, 오프라인 시스템에 모듈과 앱을 설치하는 표준 방법

  • 파이썬을 설치하는 NSIS 설치하기 전에 다른 모든 것들, 모든 모듈의 압축을 풀어서 setup.py 실행 파이썬 스크립트에 파이썬을 설치하지

    • :

      는 현재 우리 사이에 선택하는 .exe 설치 프로그램을 사용하여 모듈을 압축 한 다음 작은 모듈을 다른 dir에 압축을 푼 다음 %PYTHONPATH%에 dir을 추가합니다.

    이러한 상황을 처리하는 데있어 올바른 방법은 무엇입니까? 분명히 우리는 pip, easy_install.exe 및 기타 축복받은 도구를 사용할 수 없으며 우리의 접근 방식은 어리 석고 우아합니다.

    답변

    3

    세 번째 옵션으로 PyInstaller (http://www.pyinstaller.org)를 사용하여 응용 프로그램을 실행 파일로 배포하는 것을 고려할 수 있습니다. 당신은 pyInstaller 중에이 프로그램은

    (심지어 파이썬) 클라이언트 컴퓨터에 아무것도 설치해야 해달라고 윈도우, 리눅스, 맥 OS X, 솔라리스, AIX에서 독립 실행 형 실행 파일로 변환 (패키지) 파이썬 프로그램, . Pyinstall은 2.4 이후 Python의 모든 버전에서 작동하며 투명한 압축 덕분에보다 작은 실행 파일을 만들 수 있으며 완전히 멀티 플랫폼이며 OS 지원을 사용하여 동적 라이브러리를로드하므로 완전한 호환성을 보장합니다.

    Linux 및 Windows에서 독립 실행 형 응용 프로그램을 배포하는 프로젝트에서이 파일을 사용했습니다. 매력처럼 일했습니다. 내 프로젝트에서는 Twisted도 사용했습니다.

    현재 두 가지 선택 사항 사이에서 setup.py 접근법은 더 pythonic입니다. 그러나 컴파일해야하는 더 빠른 성능을위한 모듈 구현이 있다면 클라이언트 컴퓨터에서 그렇게 할 수는 없습니다.

    +0

    필자가 휠체어에 관련된 기술을 좋아하는만큼,'pyinstaller'와 같은 것을 사용한다는 것은 리모트에있는 distutils 나 setuptools에서 (finicky, error prone, not-by-by-you) 로직을 호출 할 필요가 없다는 것을 의미합니다. 흥미롭고 새로운 방식으로 실패 할 수도있는 연결이 끊긴 기계. 독립적 인 경우에는 실행에 대해 걱정해야하는 유일한 코드는 응용 프로그램 (물론 python과 pyinstaller가 가지고있는 부트 스트랩 코드입니다.)하지만 어쨌든 이전 코드를 처리해야하며 후자는 꽤 테스트 할 수 있습니다 용이하게). – Glyph

    3

    wheels을 사용해보세요. 케이스를 덮기 위해 설계되었습니다. 즉, 필요한 모든 패키지를 다운로드하여 휠을 한 번 만들 수 있습니다. 그런 다음 휠 보관소를 대상 컴퓨터에 복사하고 다운로드하지 않고 응용 프로그램을 설치하십시오.

    +0

    고마워요! 휠 패키지를 설치하기 전에 대상 기계에 추가 모듈을 가져와야합니까? I. e. 기본 Python 설치에서 제공하는 최소한의 파이썬 환경 만 필요로하는 "자체 추출"패킷을 생성 할 수 있습니까? –

    +0

    휠 아카이브를 풀기 위해 pip와 wheel 패키지가 있어야하며, 옵션으로 virtualenv가 있어야합니다. 휠 문서의 [사용 섹션] (http://wheel.readthedocs.org/en/latest/#usage)을 보면 매우 간단하고 명확한 예가 있습니다. –

    관련 문제