2017-03-12 13 views
8

다른 컴퓨터가 다른 분산 파일 시스템에 액세스 할 수있는 매우 복잡하고 복잡한 환경에서 작업하고 있습니다.pip를 "CC"환경 변수를 존중하는 방법

  • 기계 AX을 파일 시스템에 액세스 할 수있게되어 파일 시스템 Y에 소프트웨어를 설치하는 데 사용됩니다.
  • 기계 B은 파일 시스템 Y에 액세스 할 수 있지만 X은 액세스 할 수 없습니다.

저는 기계 B에서 일하고 있으며, 저는 파이썬을 많이 사용하고 있습니다. 경우에 따라 사전 설치되지 않은 패키지가 필요하므로 로컬에 설치하려면 pip install PKGXYZ --user을 사용합니다. 이것은 일반적으로 잘 작동하지만 catch가 있습니다.

파이썬 패키지 distutils과 원숭이 패치 파생 컴파일러 버전, 경로를 잡아, 그리고 somesuch하는 distutils.sysconfig 기능을 사용 pip 사용하는 setuptools. 이를 위해 그들은 파이썬을 설치하는 데 사용 된 내부 Makefile을 사용합니다. 이것은 일반적으로 좋은 전략이지만 내 비상 사태의 내부 경로 인 Makefile이 내 컴퓨터 B에 액세스 할 수없는 파일 시스템 X을 가리키기 때문에 내 구체적인 설정으로는 실패합니다. 나는의 기본 설정을 덮어 쓸 CC 환경 변수를 사용할 수 있습니다

import re 
import sys 
import os 
cc = os.getenv("CC") 
if not cc: 
    print("please set CC environment variable!") 
    exit(0) 
from distutils.sysconfig import get_config_vars 
for k,v in get_config_vars().iteritems(): 
    try: 
     if "fsX" in v: 
      newv = re.sub(r'/fsX/[^ ]*/g[c+][c+]',cc,v) 
      get_config_vars()[k] = newv 
    except TypeError: 
     pass 

있도록 : 따라서, 나 자신 pip--no-clean 옵션을 사용하여이 같은 조각과 설치하려는 패키지의 setup.py 해킹 찾기 pythons Makefile에서 내 컴퓨터에서 작동하는 무언가와 컴파일러 경로.

그러나 이것은 추한 해킹입니다. 분명히 이것을 할 수있는 더 좋은 방법이되어야하고 pip은 일부 환경 변수, 설정 파일 또는 명령 행 옵션을 통해 다른 컴파일러를 사용해야합니다. 아니면 거기에 있습니까?

답변

1

시스템 B에 컴파일러 도구가있는 것처럼 들리므로 로컬 도구를 사용하여 시스템에 파이썬을 다시 빌드하고 대신 사용하는 것이 좋습니다.

시스템 사용자 만이 작업을 수행하는 경우 사용자의 홈 디렉토리에 설치하여 완벽하게 방해받지 않고 사용 환경을 설정할 수 있습니다. 또는 virtualenv를 사용하십시오.

새로운 Python 설치를 쉽게 가져 와서 빌드 할 수 있습니다. Linux의 python 3.5.1 예 :

cd 
mkdir src 
mkdir -p local/python351 
cd src 
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz 
tar -xf Python*.tgz 
cd Python-3.5.1 
./configure --prefix ~/local/python351 
make 
make install 
+0

이 응답 주셔서 감사합니다. 맞춤 Python 버전을 빌드하는 것은 확실한 옵션이지만 실제로 수신자가 설치해야하는 Python 패키지에 의존하는 패키지를 작성하고 있으므로이 문제에 대한 쉬운 지침을 제공해야합니다. 제 자신의 파이썬 버전을 컴파일하는 것은 당면한 문제로 인해 과도한 것 같습니다. – carsten

+1

그리고 모든 수신자는 파이썬 설치가 현재 사용할 수없는 도구로 빌드 된 동일한 문제가 발생합니까? 나에게 약간 미친 것처럼 보입니다. 아마도 회사에서 기계를 구성하는 방법이라면 미래에 더 많은 문제가있을 수 있으므로 고쳐야합니다. 수정 된 Python 업그레이드로 변경 사항을 롤백 할 수는 없습니까? – daphtdazz

+0

예, 모든 수신자에게 동일한 문제가 있습니다. 그리고 네, 조금 미쳤습니다.그리고 네, 설치 프로그램의 수정이 진행되고 있지만, 앞으로 몇 달이 걸릴 것으로 예상됩니다. 반면에 제가 작업하는 소프트웨어는 수주 내에 배포 될 것입니다. 그래서 우리는 일하는 중급 솔루션이 필요합니다. – carsten