Debian에서 dist-packages의 Python 패키지를 virtualenv에 어떻게 추가합니까?

Debian에서 dist-packages의 Python 패키지를 virtualenv에 어떻게 추가합니까?

/usr/share/pyshared/또는 /usr/lib/pythonX.Y/dist-packages/(예를 들어 python-numpy) 에 일부 Python 패키지가 있는 경우 python-scipy해당 패키지를 virtualenv에 어떻게 추가합니까?

virtualenv에 패키지를 추가할 때 "일반적인" Python 설치 방법( setpy.py등)을 사용하여 설치해야 합니까, 아니면 자체적으로 설치해야 합니까?

기본적으로 복잡한 C 확장( numpy, scipy, pyQt/pysidepygtk)이 있는 Python 패키지를 virtualenv에 쉽게 추가할 수 있기를 원합니다.

답변1

말씀하신 대로 바퀴를 만드는 것이 가장 좋은 경우가 많습니다. 특히 정기적으로 다시 설치하는 경우에는 더욱 그렇습니다.

toxPython의 gtk 바인딩의 경우 이것이 작동하지 않았으며 (--no-site-packages를 사용하여 virtualenv를 빌드하는) 코드를 테스트하는 방법이 필요했습니다 . 테스트 목적으로 관련 시스템 설치 버전을 연결하는 것만으로도 충분하지만 site-packages/ 의 모든 내용을 연결하는 것은 아닙니다 dist-packages.

이를 위해 설치 가능한 패키지(ruamel.venvgtk), 이는 Debian 기반 시스템(Ubuntu, Linux Mint)에서 Python2.7 및 Python3.4에 대한 적절한 링크를 설정합니다. 이는 프로그램 설정 중에 수행되므로 프로그램을 변경할 필요가 없습니다. 파일 섹션 tox.inideps다음과 같습니다.

deps =
    pytest
    ruamel.venvgtk

생성된 모든 virtualenv에 대해 관련 링크를 pip설치 하고 생성합니다.ruamel.venvgtk

답변2

python setup.py install예, virtualenv가 활성화되면 distutils의 "일반적인" Python 설치 방법( )을 사용하거나 virtualenv 인식 도구(예: pip install package) 를 사용하여 필수 패키지를 설치해야 합니다 .

설치하는 패키지 버전은 virtualenv의 활성 패키지 버전이 됩니다. virtualenv MY_ENV또는 를 사용하여 virtualenv를 생성하는지 여부는 중요하지 않습니다 virtualenv --no-site-packages MY_ENV. 첫 번째 경우에는 시스템 Python에 설치된 모든 패키지를 virtualenv에서 사용할 수 있지만 virtualenv에 설치하는 모든 패키지는 virtualenv가 활성화되어 있는 동안 시스템 Python의 버전을 마스킹합니다. 두 번째 경우에는 표준 라이브러리 패키지와 여기에 설치한 모든 항목만 사용할 수 있는 격리된 Python 환경이 virtualenv에 있게 됩니다.

Numpy 및 Scipy와 같은 패키지는 Linux에서 사전 빌드된 바이너리를 제공하지 않으므로 패키지 관리자를 통해 사용 가능한 버전을 사용하지 않으려는 경우 직접 빌드하는 것이 편안해야 합니다.

답변3

이 질문은 1년 넘게(2014년 3월 현재) 아무런 활동이 없었기 때문에 아무도 대답을 하지 못했기 때문에 제가 어떻게 문제를 해결했는지 작성하겠습니다.

소스 설치 방법이 virtualenv(numpy/scipy, pyside)를 고려하는 패키지의 경우 휠을 사용하여 모든 venv에서 다시 빌드하지 않아도 됩니다.

GTK를 사용하지 않는 패키지의 경우 Python에 연결하는 방법에 따라 다릅니다.

관련 정보