2012-03-01 2 views
0

큰 파이썬 프로그램을 하나의 파일로 패키지 할 계획입니다.하나의 파일에 실행 가능한 python 프로그램을 패키지하는 방법

내 요구 사항은 다음과 같습니다

  • 단지 1 개의 파일이 파일이
  • 이상적으로 파일의 일부 버전 정보를 포함 체크섬 할 수
  • 다운로드
  • 시스템 파이썬에게

를 사용하여 지금까지 패키지 형식에 가장 적합한 후보는 .egg 및 .zip입니다.

무엇이 인데 차이점은 알과 압축 사이에입니까?

내가 할 의도 무엇 :

임베디드 시스템 내 코드, 예를 들어, 다운로드 package.zip; 내 코드를 시작합니다 (예 : python2 package.zip 내 코드가 자체를 확인할 수 있습니다 (예 : md5sum sys.argv[0]. 체크섬은 내 서버에서보고되고 모니터링됩니다.

답변

1

달걀 입니다.

패키지를 사용하는 방법에 관계없이 파일에 md5sum (또는 다른 해시 함수)을 사용할 수 있습니다. 파일의 확장자는 신경 쓰지 않고 바이너리 내용 만 신경 쓰면됩니다 동일합니다.

+0

아니요, 계란은 지퍼입니다. – Marcin

+0

감사합니다. –

+0

사실, 그 차이점은 무엇입니까? egg 파일을'python2 p.egg'를 통해 실행하면 달걀 가져 오기 훅이나 zip 가져 오기 훅을 사용합니까? "계란의 이름을 바꿀 수 없다"는 문제 등으로 영향을 받았습니까? –

2

Zip 파일은 내장 된 가져 오기가 자동으로 가져 오기 때문에 다소 마술 적입니다. 달걀을 직접 가져 오는 일은 한번도 한 번도 한 번도 없었으므로 그럴 수 있는지 또는 작동하지 않을지는 모르겠습니다.

계란을 사용하면 큰 도움이됩니다. 패키지에 대한 의존성을 지정할 수 있다는 것입니다. 이것은 당신에게 큰 문제가 아닐 수도 있습니다. 달걀을 사용하여 요구 사항을 설정하고, 파이피에 게시 한 다음 (원하는 경우) 사용자의 삶을 편하게 만듭니다.

일이 끝나면 pip (http://pypi.python.org/pypi/pip)를 사용하면 패키지를 쉽게 처리 할 수 ​​있습니다. 다음은 핍 페이지에서 직접 추출한 예입니다. -

$ pip install simplejson 

$ pip install --upgrade simplejson 

$ pip uninstall simplejson 

약간의 작업으로 많은 것을 얻을 수 있습니다. 파이썬에 물건을 밀어 넣고 싶지 않으면 자신의 비밀 Pypi (웹 서버 읽기)에 게시하고 pip에 패키지를 찾기 위해 다른 URL을 사용하도록 지정할 수 있습니다.

$ pip install -i http://mycoolserver.com/pypi 

나는 더 PIP 전문가는 아니지만, 쉬운 아파치와 아주 쉽게 자신의 PYPI를 만들 수 있습니다 (PIP의 전신)를 설치합니다. pypi 디렉토리를 게시하고 색인을 표시하도록 허용합니다 (필자는 올바른 용어라고 생각합니다). 그러면 파일 시스템에서 pypi를 찾을 수 있습니다. 이 설정을 사용하여 패키지 이름을 딴 디렉토리를 만들고 거기에 알을 놓습니다. 그것은 "잘 작동한다"(나에게 잘 :-))

+0

감사합니다. 패키지를 설치하지 않고 실행 만합니다. –

+0

일부 달걀은 실행 가능으로 표시되어 있습니다. 나는 하나도 사용하지 않았지만 방금 읽은 것에서는 계란 자체의 스텁 코드를 추가합니다. 어떤 종류의 쉘 스크립트 마법 같은데. 난 왜 당신이 단순히 계란으로 묶어서 어딘가에 웹 서버에 두지 않는 이유를 이해하지 못합니다. 당신의 인생은 크게 단순화 될 것입니다. – jaime

0

편집 : 당신의 필요를 명확히하기 전에 나는 이것을 썼다. 이것은 시스템 파이썬 실행 파일을 사용하지 않기 때문에 적합하지 않은 것처럼 보입니다.

귀하의 질문 제목은 의 정규 (즉,non-pythonista) windows 최종 사용자 그래서 두 번 클릭하여 실행할 수 있습니다. Py2exe이 정확히이 용도로 사용됩니다.

대부분의 리눅스 사용자는 하나의 실행 파일이 아닌 setup.py 파일을 가진 아카이브라고 생각하기 때문에이 가정을 취했습니다. Mac OS X에 관해서는, 나는 정말로 모른다.

관련 문제