2017-05-19 21 views
2

파이썬 스크립트가 pyenvvirtualenv에서 실행될 예정인 경우 파일에 대한 올바른 새 뱅이 무엇입니까?파이썬 스크립트에 사용되는 shebang이 pyenv virtualenv에서 실행됩니다.

예제 테스트 케이스로, 내 시스템 (OSX)의 기본 파이썬에는 pandas이 설치되어 있지 않습니다. pyenv virtualenv venv_name 않습니다. 나는 virtualenv에서 python 실행 파일의 경로를 얻으려고했다.

$ pyenv activate venv_name 
(venv_name)$ which python 
/Users/username/.pyenv/shims/python 


그래서 나는 나의 예를 script.py했다 :

#!/Users/username/.pyenv/shims/python 
import pandas as pd 
print 'success' 


을하지만 스크립트를 실행했을 때, 나는 오류가 있어요 : 것을 실행하지만

(venv_name) $ ./script.py 
./script.py: line 2: import: command not found 
./script.py: line 3: print: command not found 


을 명령 줄의 경로가 올바르게 작동합니다.

(venv_name) $ /Users/username/.pyenv/shims/python script.py 
success 

(venv_name) $ python script.py # also works 
success 

무엇이 적절한 전단인가요? 이상적으로, 나는 현재의 venv가 무엇이든간에 파이썬을 가리킬 수 있도록 일반적인 것을 원한다.

+0

나는 이것을 많이 사용하고 잘 동작한다. '#!/home/dslima90/.virtualenvs/production_enviroment/bin/python', 잘 작동하는 나의 예를 들어 보겠습니다. 당신이 상자가 없습니까? – DSLima90

+0

하지만 현재 환경을 가리키고 싶다면'#! 파이썬'? – DSLima90

+0

@ DSLima90 마지막 예제는 경로가 스크립트를 직접 실행하는 데있어 잘 작동 함을 보여 주므로 그 것으로 생각하지 않습니다. 방금'#! python : python : 나쁜 interpreter : No such file or directory' – xgord

답변

5

전체 경로로 인터프리터를 호출하는 것이 효과가 없다는 것을 알지 못합니다. 항상 사용하지만, 환경에있는 파이썬 인터프리터를 사용하려면 다음을 수행해야합니다.

#!/usr/bin/env python 

이렇게하면 파이썬 인터프리터가 사용할 환경을 검색 할 수 있습니다.

1

#! 주렁주렁 줄에 넣을 수있는 것보다 더 많은 셸을 사용해야하는 경우 동일한 파일에서 파이썬을 시작하는 간단한 셸 스크립트로 파일을 시작할 수 있습니다. 때문에 인용의

#!/bin/bash 
"exec" "pyenv" "exec" "python" "$0" "[email protected]" 
# the rest of your Python script can be written below 

파이썬은 첫 번째 행을 실행하는 대신 효과적으로 무시 모듈 참조 문 ... 함께 문자열을 결합하지 않는다.

자세한 내용은 here을 참조하십시오.