2009-07-15 6 views
1

Python 2.6을 사용하는 Python 코드를 가져와야합니다. Python 2.3 만있는 컴퓨터에서 실행됩니다 (루트 액세스 권한 없음).virtualenv with all Python libraries

이것은 virtualenv의 일반적인 시나리오입니다. 유일한 문제는 모든 라이브러리를 새로운 환경으로 복사하도록 확신 할 수 없다는 것입니다.

virtualenv --no-site-packages my_py26 

내가 원하는 것을하지 않습니다. 라이브러리 파일은 여전히 ​​/usr/lib/python2.6 디렉토리에 대한 링크 일뿐입니다.

아니요 virtualenv가이 시나리오에 적합한 솔루션인지 전혀 궁금합니다. 내가 아는 바로는 정확히 똑같은 파이썬 버전을 가진 기계에서만 작동하도록 겨냥됩니다. 일부 환경 변수 tweeking 후에 Python 파일을 시작하면 cx_Freeze와 같은 도구가 작동하지 않습니다.

모든 파이썬 라이브러리 파일을 새로운 환경으로 복사하는 숨겨진 virtualenv 옵션이 있습니까? 아니면 여기에서 도움이 될만한 다른 도구가 있습니까?

답변

4

아니요, 저는 virtualenv가하는 일을 완전히 오해 한 것 같습니다. Virtualenv는 기본 환경에서 격리 된 동일한 컴퓨터에 새 환경 을 생성합니다. 이러한 환경에서는 주 환경에 설치되지 않은 패키지를 설치할 수 있으며 --no-site-packages를 사용하면 설치된 기본 환경에서 모듈을 분리 할 수도 있습니다.

2.6이없는 컴퓨터에서 Python 2.6이 필요한 프로그램을 실행해야하는 경우 해당 컴퓨터에 Python 2.6을 설치해야합니다.

+0

PyInstaller와 같은 Lennart 도구는 Python 버전이 이전 버전이거나 Python이없는 컴퓨터에 2.6 종속 Python 프로그램을 설치할 수 있습니다. –

+0

음 ... 파이썬이 포함되어 있기 때문입니다. :)하지만 당신이 옳아 요, 그 옵션이 여기에 있습니다. 특히 타겟 머신에 컴파일러가 없으므로 파이썬을 설치할 수 없습니다. –

+2

Lennart가 지적한 것처럼 사용자는 virtualenv의 목적을 이해하지 못하기 때문에 좋은 대답입니다. – jkp

4

나는 그것을 사용 해본 적이 없어서 virtualenv 문제를 해결할 수 없습니다. 그러나 나는 미래의 사용을 위해 무엇인가를 지적 할 것이다.

소스에서 소프트웨어를 홈 폴더에 설치하고 루트 액세스없이 실행할 수 있습니다. 예를 들어 파이썬 2.6를 설치하려면 :

~/src/Python-2.6.2 $ ./configure --prefix=$HOME/local 
~/src/Python-2.6.2 $ make 
... 
~/src/Python-2.6.2 $ make install 
... 
export PATH=$HOME/local/bin:$PATH 
export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH 

~/src/Python-2.6.2 $ which python 
/home/name/local/bin/python 

이것은 내가 루트 액세스 권한이없는 소프트웨어를 설치하는 유니에 사용한 것입니다.

0

cx_Freeze 등이 왜 효과가 없을지 명확하게 설명하지 않았습니다. 이전 버전의 Python이나 Python이 전혀없는 시스템에 Python 응용 프로그램을 배포하는 일반적인 방법은 PyInstaller 같은 도구 (cx_Freeze과 같은 도구)입니다. PyInstaller는 모든 의존성의 사본을 만들고 모든 파이썬 의존성을 포함하는 하나의 실행 파일을 만들 수있게합니다.

그런 도구를 사용할 수없는 이유는 환경 변수를 조정하는 것입니다. 그 이유를 정확히 설명하면 도움이되는 대답을 얻을 수 있습니다.