답변:
또 다른 대안으로 파일을 다운로드하는 것입니다 apt-get download
, 그것을 추출 dpkg -x
하고 VIRTUALENV 압축을 푼 파일을 이동 :
예:
apt-get download python-xyz
이 결과를 다음과 같이 가정하십시오.
./python-xyz_1.2.3-3ubuntu5_amd64.deb
그런 다음 dpkg를 사용하여 .deb 파일의 데이터 부분을 추출하십시오.
dpkg -x python-xyz_1.2.3-3ubuntu5_amd64.deb ./xyz-tmp
새로 작성된 ./xyz-tmp
디렉토리에 이제 /
(root) 에 설치했을 모든 파일 이 있습니다 apt-get install
.
그들이 있다고 가정 :
./xyz-tmp/usr/lib/python2.7/dist-packages/xyz/
./xyz-tmp/usr/lib/python2.7/dist-packages/xyz-1.2.3.egg-info
여전히 하위 디렉토리 (예 : dist-packages
vs site-packages
) 를 매핑해야 하며 파일을 virtualenv로 이동할 수 있습니다 (virtualenv 가정 /home/user/.virtualenvs/py27
).
mv ./xyz-tmp/usr/lib/python2.7/dist-packages/* /home/user/.virtualenvs/py27/lib/python2.7/site-packages/
이전의 답변과 비교할 때이 접근 방식은 추출 디렉토리에서 파일을 볼 수 있기 때문에 어떤 파일이 설치되어 있는지 조사 할 필요가 없다는 이점이 있습니다. 추출 된 아카이브와 virtualenv 사이의 디렉토리 맵핑이 여전히 필요합니다.
virtualenv에 필요한 것은 virtualenv의 서브 트리에 패키지 파일이 존재하는 것입니다. apt-get을 통해 시스템 Python에 어떤 파일이 설치되었는지 확인할 수있는 한 해당 파일을 virtualenv에 복사 할 수 있습니다. 여기에는 사이트 패키지 디렉토리 및 Python 하위 트리 내의 다른 위치 (예 : 스크립트)에있는 파일이 포함됩니다.
가상의 예 :
sudo apt-get python-xyz
"xyz"라는 패키지를 시스템 Python 2.7에 설치한다고 가정하면 다음을 얻을 수 있습니다.
/usr/lib/python2.7/dist-packages/xyz/
/usr/lib/python2.7/dist-packages/xyz-1.2.3.egg-info
"xyz"패키지와 관련된 파일을 virtualenv에 복사하십시오 (virtualenv 가정 /home/user/.virtualenvs/py27
).
/home/user/.virtualenvs/py27/lib/python2.7/site-packages/xzy/
/home/user/.virtualenvs/py27/lib/python2.7/site-packages/xzy-1.2.3.egg-info
어려움은 (1) 어떤 파일이 특정 패키지에 속하는지를 결정하고 (2) 시스템 Python과 virtualenv 사이의 해당 서브 디렉토리를 맵핑하는 것입니다 (예 : 위의 예 dist-packages
와 비교 site-packages
).
누구든지 이것에 대해 더 많은 경험이 있다면 의견을 말하십시오.