2017-10-19 31 views
0

저는 여러 노드에서 배포하고있는 파이썬 스크립트를 가지고 있습니다. 파이썬 2.6은 기본적으로/usr/bin에 설치되어 있고 파이썬 2.7은 모든 노드의/opt 디렉토리에 있습니다. 이제 현재 노드에서 스크립트를 실행할 때 터미널에서 파이썬 2.7 인터프리터의 경로를 설정할 수 있지만이 스크립트가 배포되는 나머지 노드에서는 스크립트를 관리 할 수 ​​없습니다. 스크립트의 시작 부분에 -----파이썬 스크립트에서 파이썬 인터프리터 경로를 지정하십시오.

#!/opt/python2.7/bin/python 

을 추가했습니다. 그러나 여전히 작동하지 않습니다. 어떻게 스크립트 자체의 시작 부분에 파이썬 인터프리터/파이썬 경로를 변경할 수 있습니다. 당신이 일을하지만 확인해야합니다 설명 어떤

+1

이 방법이 효과적입니다. 오류는 무엇입니까? 스크립트가 실행 가능합니까? – deets

+0

여전히 기본 파이썬 경로를 가리키고 있습니다. 따라서 가져 오기 패키지를 식별 할 수 없습니다. –

+0

"print sys.prefix"로 무엇을 제공합니까? 스크립트를 어떻게 호출합니까? – deets

답변

0

: 스크립트가 실행 가능

  • 것을 (chmod +x my_script.py 필요한 경우).
  • 스크립트를 직접 호출하고 다른 Python 인터프리터를 사용하지 않는 경우 (./my_script.py 또는 /path/my_script.py을 실행하고 python my_script.py이 아닌지 확인).

는 스크립트의 맨 위에 다음 줄을 추가 할 수있는 문제를 진단하는 데 도움이 : 출력이 다른 인터프리터 스크립트를 호출 할 수 있습니다 /opt/python2.7/bin/python하지

#!/opt/python2.7/bin/python 
import sys 
print(sys.executable) 

합니다.

경우에만 원격 파이썬의 2.6 버전에서 실행되는 스크립트를 호출하지만 당신은 또한 추가 파일을 배포 할 수 있습니다, 당신은 다음과 같은 보조 스크립트 어딘가에 당신의 주요 스크립트를 전송하고 실행을 시도 할 수 있습니다 몇 가지 이유 :

from subprocess import call 
call("/opt/python2.7/bin/python /path/my_scipt.py", shell=True) 
+0

예 머신의 나머지 부분에있는 기본 인터프리터는 Python 작업이 분산되어 사용되는 Python 2.6입니다. 코드 자체에서 2.7 인터프리터를 가리키는 작업을 어떻게 만들 수 있습니까? –

+0

내가 아는 한 당신의 문제를 해결할 다른 방법이있을 수는 없다. 두 가지 질문 : Python 2.6을 원격으로 만 실행할 수 있습니까 아니면 쉘에서 파일을 실행할 수 있습니까? 원격 노드에 하나의 스크립트가 아닌 두 개의 스크립트를 배포 할 수 있습니까? – nudomarinero

+0

내 스크립트를 하이브 udf로 배포하므로 내 스크립트가 모든 노드에서 배포되고 하이브에 의해 실행됩니다. 기본적으로 파이썬 2.6을 가리키는 각 노드에서 기본 인터프리터를 사용하여 하이브를 실행한다고 가정합니다. 그래서 우리는 파이썬 2.7이 설치되어 있지만 경로에 있지 않기 때문에 기본적으로 그것을 사용하여 실행할 수 없습니다. –