2014-04-08 7 views
1

파이썬 스크립트 중 하나에서 파일 맨 위의 import 문을 사용하고 있습니다.파이썬에서 환경 변수를 내 보낸 후에 가져 오기가 작동하지 않습니다.

import phx_commonlib.configuration.systemConfig as systemConfig 

이 ~/.bashrc에 파일에 설정되어 PYTHONPATH 환경 변수를 찾습니다, 나는 리눅스 상자에 bash 쉘에서 실행할 때 파일의 벌금을 가져 오는 중입니다. 나중에 나는 퍼티를 사용하여 나의 리눅스 박스에 연결했고 ~/.bashrc 파일은 소스가되지 않기 때문에 나의 스크립트는 퍼티에서 실패했다. 그래서 아래 스크립트와 같이 PYTHONPATH 변수를 내 보냅니다. (나는 정상이 PYTHONPATH를 찾을 수 없습니다 있기 때문에 실패에서 가져 오기를 유지하는 경우)

def exportPythonPath(): 
    pwd = os.getcwd() 

    pythonpath = "" 

    scanPath_index = pwd.find('/phx_test/scan') 
    if scanPath_index != -1: 
     pythonpath = pwd[0:scanPath_index] 
     pythonpath = pythonpath + ":/projects/phx/tools:/projects/phx/tools/pylib" 
     os.environ["PYTHONPATH"] = pythonpath 
     print os.environ["PYTHONPATH"] 

와 나는 함수 내부의 PYTHONPATH를 설정 한 후 "systemConfig으로 수입 phx_commonlib.configuration.systemConfig"를 수입하고있다. 위의 함수가 끝날 때 print 문은 올바른 PYTHONPATH 환경 변수를 출력합니다. 그러나 여전히 import 문이 작동하지 않습니다. "ImportError : No module phx_commonlib.configuration.systemConfig"라는 오류가 발생합니다.

(스크립트에서 설정하는 대신에) putty에서 직접 PYTHONPATH를 설정하고 파이썬 스크립트를 실행하면 올바르게 모듈을 가져옵니다. 어느 누구도 스크립트의 문제 또는 가져 오기를 수행하는 방법을 알려주십시오. 당신의 import들과 계속 다음

import sys 
sys.path.append(pythonpath) 

그리고 대신 os.environ에 PYTHONPATH를 설정

답변

1

, 당신은 같은에 sys.path을 수정 해야합니다.

os.environ에 PYTHONPATH를 설정하는 이유는 이 import 지시어를 실행하는 시점에서 참조하는 것입니다.

PYTHONPATH 환경 변수를 설정 한 다음 인터프리터를 시작하면이를 볼 수 있고 sys.path에 추가하고 계속 수행 할 수 있습니다.

PYTHONPATH env-var 세트가없는 인터프리터를 시작하면 sys.path은 시작할 때 업데이트되지 않고 os.environ['PYTHONPATH'] (인터프리터 시작 후 설정된 새 값)은 사용되지 않습니다.

+1

우수. 그것은 작동했고 & 나는 개념을 분명히 이해했다. – kadina

+0

@kadina 임무 완수! – shx2

관련 문제