2011-01-07 5 views
16

시스템 라이브러리 (virtualenv의 방식)에 다시 연결되지 않는 독립적 인 Python 환경을 만들고 싶습니다. Python 패키지를위한 표준 C/C++ 라이브러리 버전을 포함하고 있습니다. 라이브러리 (예 : PIL 및 libjpeg).개인적이고 독립적 인 파이썬 환경을 만드는 가장 좋은 방법은 무엇입니까?

전체 런타임을 디렉토리에 배포하는 상용 응용 프로그램을 보았 기 때문에이를 수행 할 수 있습니다.

문제는 쉽게 해결할 수있는 도구가 있습니까? Virtualenv는 거의 나를 데려옵니다. --no-site-packages와 --relocatable 플래그를 사용하면되지만 표준 "C"라이브러리의 문제는 해결되지 않습니다. 예를 들어 libjpeg와 libpng의 번들 된 개인용 버전을 사용하는 PIL을 빌드 할 수 있기를 원합니다.

제안 사항이 있습니까?

+1

이 자신의 사용인가 또는 배포를 패키지 하시겠습니까? 그것은 약간 불분명하다. –

+0

난 내 사용. 이상적으로는 "휴대용 환경"을 원합니다. 동일한 기본 아키텍처 및 운영 체제를 사용하는 컴퓨터간에 이동할 수 있습니다. –

답변

1

cx_Freeze 또는 py2exe를 시도해보십시오. 그것들은 재배포 가능하도록 파이썬 애플 리케이션을 패키지하는 데 사용되며, 의존하는 모든 패키지/라이브러리를 포함합니다.

+0

휴대용 개발 환경을 갖기 위해 제가 사용했던 모든 컴퓨터에 설치할 수있는 방법을 찾고있었습니다. 배포 용 냉동 시스템. 하지만 어쩌면 이러한 패키징 프로그램이 dev 환경을 동결시키는 데 사용될 수 있습니다. –

+1

알 수 있습니다. 이 경우 setuptools를 사용하여 install_requires가 정의 된 소스 배포판을 만들면 pypi에서 필요한 모든 종속성을 얻을 수 있습니다. 그런 다음 다른 컴퓨터에서 개발 환경을 만드는 것은 소스를 해당 컴퓨터에 다운로드하고 설치 스크립트를 실행하는 것일뿐입니다. – maranas

1

나는 py2exe을 성공적으로 사용했습니다. cx_Freeze도 있습니다.

더 제안 여기를 참조 :이 정책에 대한

:

시스템 라이브러리로 다시 연결하지 않습니다

당신에게 물론 할 수 없다. 완전히 제거하면 일부 시스템 라이브러리가 필요합니다. Windows 응용 프로그램을 원하면 Windows API를 사용해야합니다. Windows가 설치되어 있지 않은 경우에 대비하여 응용 프로그램과 함께 Windows의 전체 복사본을 번들로 묶고 싶지 않다고 가정합니다.

+1

오른쪽. 일반적으로 OS에 포함되는 것들. 그러나 특정 패키지가 사용하는 특수 라이브러리 –

5

정말 번거롭기는하지만 파이썬 설치 및 스크립트를 배포 가능한 패키지에 저장합니다. 당신은 다음을 수행 할 수 있습니다,

  • 다운로드 상대 경로를 취할 것을 접두사 스크립트 (툴체인) 만들기 컴파일하고 프로젝트 디렉토리 (. 즉, 파이썬 툴체인)
  • 에 파이썬을 설치하고 PATH, PYTHONPATH, LD_LIBRARY_PATH을 동적으로 업데이트하십시오.
 
#!/bin/sh 

# If your clever you can determine install directory dynamically 
prefix='install directory' 
toolchain=$prefix/python-toolchain 
export PATH=$toolchain/bin:$prefix/app/bin:$PATH 
export LD_LIBRARY_PATH=$toolchain/lib:$LD_LIBRARY_PATH 
export PYTHONPATH=$prefix/app/lib:$PYTHONPATH 
exec $* 
  • 앱 스크립트의 마법 쿠키는 다음과 같이 할 수 있습니다 :
 
#!.../install directory/toolchain python 

print "Hello World!" 
  • 이제이 같은 디렉토리 배포 할 수 있어야한다 :
    • package/,210
      • python-toolchain/
      • app/
관련 문제