2014-09-10 1 views
0

Windows 컴퓨터에서 파이썬 스크립트에서 wget을 호출하는 방법을 찾으려고합니다. 나는 기계에/bin 밑에 wget을 설치했다. 하위 프로세스 또는 os 모듈을 사용하여 전화를 걸면 내가 시도하는 내용과 상관없이 오류가 발생하는 것으로 보입니다. 이것은 wget이 인식되도록 minGW를 통해 파이썬 시스템 호출을 라우트해야한다는 사실과 관련 있다고 가정합니다.Windows에서 MINGW32를 통해 Python으로 시스템 호출

아무도 이것을 처리하는 방법을 알고 있습니까?

감사합니다.

+0

먼저 cmd.exe에서 실행할 수 있는지 확인하십시오. 전체 경로를 사용하여/bin을 환경 변수 PATH에 추가하거나 추가 할 수 있습니다. – Yuan

+0

시도한 코드를 보여주십시오. 'shell = True'를 사용한다면, 그것을 사용하지 않으려 고 했습니까? 또는'COMSPEC' 환경 변수를 디폴트'cmd.exe' 대신에 MinGW 쉘로 설정 하시겠습니까? – abarnert

+0

내가 mingw에서 'echo $ PATH'를하면/bin이 환경 경로에있다. 나는 그 mingw가 'wget'을 인식하지만 윈도우의 명령 프롬프트는 그렇지 않다. 따라서 내 비단뱀도 마찬가지입니다. Windows 경로 변수에 \ bin을 추가하려고 시도했지만 작동하지 않는 것 같습니다. 나는 'setx path "% path %; \ bin"'을 사용했습니다. 변경 사항이 경로에 표시되지만 명령 프롬프트는 여전히 'wget'또는 'wget.exe'를 인식하지 못합니다. 또한 일반적으로 명령 프롬프트를 통해 \ bin으로 이동할 수없는 것처럼 보일 수 있습니다. 이것에 대한 어떤 생각? –

답변

1

"MinGW"와 같은 것은 없습니다. Windows 용 Unix 에뮬레이션 환경 인 MSYS를 의미 할 수도 있습니다. MSYS는 Unix처럼 보이지만 Windows에서는 모든 것을 실행합니다. 특히 MSYS는 /bin을 MSYS를 설치하는 드라이브와 디렉토리에 매핑합니다. MSYS를 C:\MSYS에 설치 한 경우 MSYS /bin 디렉토리는 실제로 C:\MSYS\bin입니다.

/bin을 MSYS PATH 환경 변수에 추가하면 MSYS는 C:\MSYS\bin 디렉터리를 검색합니다. /binSETX 명령을 사용하여 Windows PATH 환경에 추가하면 Windows는 \bin 디렉토리에서 현재 드라이브를 검색합니다.

아마 파이썬의 표준 버전은 파이썬의 표준 Windows 포트입니다. 정상적인 Windows 응용 프로그램이므로 PATH 환경 변수를 예상대로 해석하지 않습니다. 경로에 /bin이 있으면 현재 드라이브의 \bin 디렉터리를 검색합니다. wget은 현재 디렉토리의 C:\MSYS\bin이 아니고 \bin이므로 Python에서 실행하려고하면 오류가 발생합니다.

MSYS 셸에서 Windows 명령을 실행하면 MSYS가 자동으로 PATH을 Windows 호환 형식으로 변환하여 MSYS 경로 이름을 Windows 경로 이름으로 변경합니다. 즉, MSYS 셸에서 Python을 실행하여 Python 스크립트를 작동시킬 수 있어야합니다.

+0

사실입니다. 이 문제를 게시하기 전에 나는 경로 문제를 깨닫고 C : \ Windows 아래에 wget.exe의 복사본을 던지기로 결정했습니다. 파이썬을 실행할 때 인식됩니다. 파이썬을 실행하는 msys에 대한 좋은 메모입니다 ... 한번 시도해 보겠습니다. 일단 경로 변수가 그렇게 끔찍하지 않습니다. 감사 –

관련 문제