다른 컴퓨터가 다른 분산 파일 시스템에 액세스 할 수있는 매우 복잡하고 복잡한 환경에서 작업하고 있습니다.pip를 "CC"환경 변수를 존중하는 방법
- 기계
A
는X
을 파일 시스템에 액세스 할 수있게되어 파일 시스템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
은 일부 환경 변수, 설정 파일 또는 명령 행 옵션을 통해 다른 컴파일러를 사용해야합니다. 아니면 거기에 있습니까?
이 응답 주셔서 감사합니다. 맞춤 Python 버전을 빌드하는 것은 확실한 옵션이지만 실제로 수신자가 설치해야하는 Python 패키지에 의존하는 패키지를 작성하고 있으므로이 문제에 대한 쉬운 지침을 제공해야합니다. 제 자신의 파이썬 버전을 컴파일하는 것은 당면한 문제로 인해 과도한 것 같습니다. – carsten
그리고 모든 수신자는 파이썬 설치가 현재 사용할 수없는 도구로 빌드 된 동일한 문제가 발생합니까? 나에게 약간 미친 것처럼 보입니다. 아마도 회사에서 기계를 구성하는 방법이라면 미래에 더 많은 문제가있을 수 있으므로 고쳐야합니다. 수정 된 Python 업그레이드로 변경 사항을 롤백 할 수는 없습니까? – daphtdazz
예, 모든 수신자에게 동일한 문제가 있습니다. 그리고 네, 조금 미쳤습니다.그리고 네, 설치 프로그램의 수정이 진행되고 있지만, 앞으로 몇 달이 걸릴 것으로 예상됩니다. 반면에 제가 작업하는 소프트웨어는 수주 내에 배포 될 것입니다. 그래서 우리는 일하는 중급 솔루션이 필요합니다. – carsten