2017-11-01 27 views
0

안녕하세요 스택 오버플로 사용자를 실행하려고하지 않을 때 Popen. 본질적으로 mypy를 사용하는 테스트 스위트를 작성하고 있지만 내 빌드 시스템에서 유효한 출력을 얻지 못하는 것 같습니다.얻기 'OSError : [errno를 2] 해당 파일이나 디렉토리'는 popen에 내가 mypy가 제대로 작동하려면 얻으려고 어려움의 큰 거래를 보내고 있습니다</p> <p>, mypy

문제의 라인은 다음과 같다 :

p = subprocess.Popen(['mypy'] + extra_args + python_files, env=my_env, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIP)

extra_args는 캐시 디렉토리 및 역 추적을 지정하고, python_files 테스트 할 수있는 문제의 파일입니다. 나는 이러한 논쟁 중 어느 것도 문제가 아니라고 확신하며, 이것들을 가지고 놀았고 진전이 없었습니다.

이 파일은 git repo에 있으며, 복제하여 빌드 상자에 넣습니다. 로컬에서는 문제가되지 않습니다. 오류를 나타내는 mypy 출력이 유효합니다. 그러나, 내 컴퓨터에서 나는 OSError: [Errno 2] No such file or directory 오류가 발생합니다. 내가 shell=True를 추가하려고했습니다

Traceback (most recent call last): 
    File "mypath/run_mypy.py", line 83, in <module> 
    main() 
    File "mypath/run_mypy.py", line 70, in main 
    p = subprocess.Popen(['mypy'] + extra_args + python_files, env=my_env, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) 
    File "/usr/lib/python2.7/subprocess.py", line 711, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 
myotherpath/build-stack.mk:162: recipe for target 'mypy' failed 

하지만 모든 mypy 오류가 surpressed 시작으로이 결과는 플러스 나쁜 스타일/보안 문제로 간주되어 다음과 같이 전체 오류 메시지입니다.

내 추측/생각에 어쩌면 mypy는 어쨌든 popen이 셸없이 사용하는 경로에 있지 않지만 실제로는 확실하지 않습니다.

어쨌든 저는 여기에 엄청난 손실을 입었습니다 - 어떤 도움을 주시면 감사하겠습니다.

+0

'env = my_env'는 현재 프로세스의 환경을 대체합니다. my_env가 올바르게 설정되어 있지 않으면 호출이 실패합니다. –

+0

감사합니다. Michael! 나는 진짜 문제를 알아내어 아래에 게시했다. –

답변

0

좋아, 그냥 내 문제를 알아 냈어. 그리고 그것은 꽤 명백했다.

이 그것을 고정 : python3 -m pip install -U mypy==0.530

내가 mypy 박스에 설치하지 않았다 밝혀졌습니다. 이 오류 메시지는 내가 명령 한 것 중 하나를 언급하고 있다고 생각했기 때문에 잘못된 것을 이끌어 냈습니다. 실제 명령이 아닙니다. 바라기를 이것은 미래에 누군가에게 도움이되기를 바랍니다.