Python 3.3 및 Qt4.8을 사용하여 PyQt 응용 프로그램을 작성했으며 QProcess를 시작합니다. 새로 시작된 하위 프로세스는 python 스크립트를 실행하려고 시도하며이 스크립트는 3.3 디렉토리 (시스템의 기본 python은 2.7 임)에서 python 모듈을 검색하기 때문에 실패합니다.다른 Python 버전으로 설정된 PYTHONPATH를 사용하여 QProcess를 시작하십시오.
나는 자식 프로세스가 부모 프로세스로부터 환경 (그러므로 PYTHONPATH)을 상속 받기 때문에 파이썬 3.3 디렉토리에서 파이썬 모듈을 찾고 있다고 생각한다. QProcess.setProcessEnvironment를 사용하여 PYTHONPATH를 변경할 수 있지만 파이썬 3.3을 사용하는 PyQt 응용 프로그램에서 2.7에 대한 PYTHONPATH 값을 얻는 방법은 무엇입니까?
편집 : 아래의 답변은 Viktor에서 저에게 효과적입니다. 나는 환경에서 PYTHONPATH와 PYTHONHOME을 제거해야했습니다. 다른 런처가 내 응용 프로그램의 로컬 디렉토리 (나는 py2app를 사용하여 app/package를 만들었습니다)에서 사용되고 있었기 때문에 PYTHONHOME을 제거해야했습니다. 당신은 그냥 환경에서 현재 하나를 제거 기본 PYTHONPATH
의에 서브 프로세스 파이썬 그냥 되돌리려면
systemEnvironment = QtCore.QProcessEnvironment.systemEnvironment()
systemEnvironment.remove('PYTHONPATH')
systemEnvironment.remove('PYTHONHOME')
process.setProcessEnvironment(systemEnvironment)
코드의 문제 일부를 추가합니다 (
env.append
부분을 생략) : 아래 코드는 너는 그 질문을해야한다. –process = QProcess (self); process.start ("perl abc.pl"); 이 abc.pl in trun은 다른 python 스크립트를 호출하며 2.7 환경 (현재 스크립트는 python 3.3에서 실행 중입니다)을 검색하도록 PYTHONPATH를 설정하여 호출해야합니다. – Gaurav