2011-12-04 4 views
3

python 프로그램에서 실행할 수있는 subprocess (그 이유는 주 프로그램이 스크립트를 실행할 때 끝났습니다 wx .Aall 및 Close). 그러나 스크립트가 실행되면 ImportError: No module named os으로 1 행에 오류가 발생하여 PythonPath와 관련이 있다고 생각하게되지만 터미널에서 스크립트를 실행할 수 있습니다.python 실행중인 하위 프로세스 가져 오기 오류

이 방법으로 실행할 때 스크립트에서 핵심 모듈을 볼 수없는 이유는 무엇입니까?

편집 : 문제의 라인은 다음과 같습니다.

wx.CallAfter(subprocess.Popen,'python %s "%s" %s %s'%(os.path.join(BASE_DIR,"updatecopy.py"),BASE_DIR,pos[0],pos[1]),shell=True) 

BASE_DIR 그냥 어쩌면 당신은 대신는 popen의 os.execv를 사용할 수에

+0

단순히 subprocess.Popen (...)을 실행해도 동일한 문제가 있습니까? –

+0

'os'는 대부분의 파이썬 버전을위한 내장 모듈입니다. 그것이 수입 될 수 없다는 사실은 통역사가 문을 닫고 있다는 신호 일 것입니다. 행동을 보여주는 완전한 스크립트 예제를 보여줄 수 있습니까? – SingleNegationElimination

답변

1

하위 프로세스가있다.

고정 된 프로세스에서 실행할 때이 문제가 발생하는 것을 보았습니다. 그렇다면 새로운 파이썬 프로세스에 대한 이상한 환경을 물려받을 가능성이 큽니다. 이 상황은 다음의 경우

대부분의 냉동 스크립트는 파이썬 아무것도 찾을 수없는 것은 놀라운 일이 아니다이 경우 압축 파일에서 실행하려고한다, 그것은 zip 파일 :

에 갇혀 전부 고정 된 스크립트를 실행하는 데 사용하는 python 실행 파일을 사용하여 실행 해보십시오. 그것은 특별한 환경을 다룰 수 있어야합니다.

0

스크립트가 살고있는 디렉토리입니다. os/python docs 가입일

:

이러한 기능은 모든 현재 프로세스 교체 새로운 프로그램 을 실행; 그들은 돌아 오지 않는다. Unix에서는 새로운 실행 파일이 현재 프로세스에로드되고 호출자와 동일한 프로세스 ID를 갖습니다. 오류는 OSError 예외로보고됩니다. os.exec가 * 그래서 누군가가 제안는 popen 대신에 그것을 사용하는 것이 좋습니다 않을 것 이상 사용되지 않습니다 때문에

(강조 내)

관련 문제