패키지를 설치할 때 pip 컴파일 바이너리를 저장할 수 있습니까?

패키지를 설치할 때 pip 컴파일 바이너리를 저장할 수 있습니까?

저는 Raspberry Pi 3 프로젝트를 진행 중입니다. 내 프로젝트에 필요한 것 중 하나는 cython입니다.

Virtualenv 내에서 Raspberry Pi를 실행하는 데에는 pip install cythonCython을 먼저 컴파일해야 하기 때문에 완료하는 데 약 40분이 걸립니다. 이 40분 동안 topcc가 실행 중이며 하나의 코어를 100% 사용하여 컴파일을 시도하고 있음을 보여줍니다.

SD 카드를 새로운 Raspbian 이미지로 계속 재설정해야 하기 때문에 하루에 여러 번 이 작업을 수행해야 합니다. 이는 분명히 시간이 많이 걸리고 진행 속도가 느려질 것입니다.

pip가 cython을 컴파일한 후 바이너리 파일은 어디에 저장됩니까? 가상 환경에서? 파일 시스템의 다른 곳에 있습니까?

virtualenv에 저장된 경우 전체 virtualenv 폴더를 보관하고 새 Linux로 복원하여 작동할 것으로 기대할 수 있습니까? 나는 virtualenv가 이식 가능하지 않아야 한다는 것을 알고 있습니다(arg --relocatable자체 문제가 있는 것으로 보이는 arg 를 사용하지 않음). 그러나 내 경우에는 virtualenv를 복원할 때 virtualenv에 대한 경로가 동일하게 유지됩니다.

답변1

캐시 디렉토리에서 휠 파일을 복사하기만 하면 됩니다. pip install pkgname방출되고 설치 가능한 호환 휠이 없는 것으로 확인 되면 pip소스 dist에서 휠을 빌드하고 향후 재설치 시 재사용할 수 있도록 캐시에 저장합니다. 휠 파일을 찾으려면 다음을 실행하십시오.

$ find $HOME/.cache/pip -type f -name Cython*.whl

로컬 파일에서 설치하려면 파일을 백업하세요.

$ pip install path/to/file.whl

여기에서 어디로 갈 것인가: 로컬 저장소

미리 빌드된 휠 컬렉션이 있으면 다음 단계는 설치할 로컬 PyPI 저장소를 설정하는 것입니다. 가장 간단한 방법은 휠을 패키지 이름을 딴 디렉터리로 구성하고 간단한 HTTP 서버를 실행하는 것입니다.

└── repodir
    ├── Cython
    │   └── Cython-0.28.0-cp36-cp36m-linux_aarch64.whl
    ...

예를 들어 서버를 시작하십시오.

$ python3 -m http.server -p 9000

이제 저장소를 다음으로 전달할 수 있습니다 pip.

$ pip install Cython --extra-index-url=http://127.0.0.1:9000

pip.conf또는 매번 입력할 필요가 없도록 저장소 URL을 유지해 둘 수도 있습니다 .

# pip.conf
[global]
extra-index-url=http://127.0.0.1:9000

더 자세히 알고 싶다면 devpi다양한 패키지 관리, 웹 UI 등을 제공하는 좋은 PyPI 저장소 서버가 많이 있습니다.

관련 정보