2016-07-29 4 views
1

bash 스크립트에서 python 스크립트를 호출하려고합니다. bash 스크립트에서 .py를 실행하려고 시도 할 때만 가져 오기 오류가 발생합니다. 내가 파이썬 myscript.py 함께 실행하면 모든게 좋습니다.Bash 스크립트에서 python 스크립트 호출하기

while true; do 
    python script.py 

    echo "Restarting..."; 
    sleep 3; 
done 

는 오류 내가 얻을 : 이것은 내 bash는 스크립트입니다

Traceback (most recent call last): 
    File "script.py", line 39, in <module> 
    from pokemongo_bot import logger 
    File "/Users/Paolo/Downloads/folder/t/__init__.py", line 4, in <module> 
    import googlemaps 
ImportError: No module named googlemaps 
+1

내가 downword를 얻는 이유는 'googlemaps 가져 오기'를 시도 할 때 오류가 script.py와 googlemaps라는 모듈을 가지고 있지 않기 때문이라고 생각합니다. – Alastair

+0

참고 : http://stackoverflow.com/questions/7332299/trace-python-imports – jmunsch

+0

또한 'virtualenv' 또는'venv'를 사용하면 일반적으로 너무 유용합니다. – jmunsch

답변

1

귀하의 문제는 스크립트 자체에, 당신의 bash는 코드가 OK입니다! python scrip.py을 bash에서 직접 실행하는 데 문제가 없다면 두 호출에 대해 동일한 인터프리터를 사용하는지 테스트해야합니다. python 스크립트에서 shebang 행을 검사 할 수 있습니다. 파일의 첫 번째 줄, 예를 들어 #!/usr/bin/env python 또는 #!/usr/bin/python이고 출력이 다른 경우 출력을 which python 명령과 비교하십시오. 변경하거나 shebang 행을 파일에 추가하십시오. . bash에서 파일을 직접 호출하면 ./some_script.py bash는 첫 번째 줄을 읽고 세 번 줄이면 파일에 대한 특정 명령을 실행합니다. 필자는 두 개의 다른 인터프리터를 사용하여 python script.py과 직접 파일을 호출하고 간접적으로 ./script.py 중 하나에 적절한 파이썬 모듈이 없을 수 있다는 점을 지적합니다.

노하우 코드 :

$ which python 
/usr/local/bin/python 

그래서 두 번째 줄은 스크립트 파일이의 첫 번째 줄에 쓰기에서 오두막을 구축하기 인터프리터의 경로입니다.

#!/usr/local/bin/python 
+0

bash : #!/bin/bash Python : #!/usr/bin/env python .... 내가 변경해야합니다. 뭔가? – Levenlol

+0

python script.py가 작동하면 업데이트 된 답변이 작동해야합니다. – flipvarga

3

귀하의 질문에 더 많은 이야기가 있습니다. PYTHONPATH 변수가 어딘가에서 혼란스러워지고 있습니다. bash는

: 파이썬에서

echo $PYTHONPATH 

:
는 몇 빠른 테스트 라인을 삽입 어떤 시점에서

import os 
print os.environ["PYTHONPATH"] 

을, Google지도에 경로를 잃었어요.

관련 문제