Windows에서 Python 스크립트를 실행하는 방법은 무엇입니까?


91

간단한 스크립트 blah.py (Python 2 사용)가 있습니다.

import sys
print sys.argv[1]

스크립트를 다음과 같이 실행하면 :

python c:/..../blah.py argument

인수를 인쇄하지만 스크립트를 다음과 같이 실행하면

blah.py argument

오류 발생 :

IndexError ...

따라서 인수는 스크립트로 전달되지 않습니다.

PATH의 python.exe. blah.py가있는 폴더도 PATH에 있습니다.
python.exe는 * .py 파일을 실행하는 기본 프로그램입니다.

무엇이 문제입니까?


3
코드 스 니펫을 게시하면 도움이 될 수 있습니다.
jldupont 2009

수정 구슬이없는 사람은 이미 해결책을 제시했습니다 =) print sys.argv [1]은이 오류를 생성합니다.
ton4eg 2009

여러 버전의 Python이 설치되어있는 경우이 stackoverflow.com/questions/1934675/… 가 필요할 수 있습니다 .
laike9m

레지스트리에서 내 스크립트를 실행하도록 Python에 수동으로 지시 : "C : \ Python27 \ python.exe" "C : \ Python27 \ tpt.py" "% 1"`

답변:


144

앞에 "python"을 입력하지 않고 스크립트를 실행할 때 Windows가 프로그램을 호출하는 방법에 대해 두 가지를 알아야합니다. 첫 번째는 Windows가 어떤 종류의 파일인지 확인하는 것입니다.

    C : \> assoc .py
    .py = Python.File

다음으로 Windows가 해당 확장으로 작업을 실행하는 방법을 알아야합니다. "Python.File"파일 유형과 연결되어 있으므로이 명령은 수행 할 작업을 보여줍니다.

    C : \> ftype Python.File
    Python.File = "c : \ python26 \ python.exe" "% 1"% *

따라서 내 컴퓨터에서 "blah.py foo"를 입력하면이 정확한 명령이 실행됩니다. 전체 내용을 직접 입력 한 경우와 결과 차이는 없습니다.

    "c : \ python26 \ python.exe" "blah.py"foo

따옴표를 포함하여 같은 것을 입력하면 "blah.py foo"를 입력했을 때와 동일한 결과를 얻을 수 있습니다. 이제 나머지 문제를 스스로 해결할 수있는 위치에 있습니다.

(또는 콘솔에 표시되는 내용의 실제 잘라 내기 및 붙여 넣기 사본과 같은 더 유용한 정보를 질문에 게시하십시오. 이러한 유형의 작업을 수행하는 사람들은 투표를 받고 평판 포인트를 얻고 더 많은 사람들을 얻습니다. 좋은 답변으로 그들을 도울 가능성이 높습니다.)

의견에서 가져옴 :

assoc 및 ftype이 올바른 정보를 표시하더라도 인수가 제거 될 수 있습니다. 이 경우 도움이 될 수있는 것은 Python 관련 레지스트리 키를 직접 수정하는 것입니다. 설정

HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command

핵심 :

"C:\Python26\python26.exe" "%1" %*

이전 %*에 누락되었을 가능성 이 있습니다. 마찬가지로 설정

 HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

같은 값으로. http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/ 참조

python.exe에 대한 예제 레지스트리 설정 HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command레지스트리 경로는 다양 python26.exe하거나 사용 하거나 python.exe이미 레지스트리에있는 경로 일 수 있습니다 .

여기에 이미지 설명 입력 HKEY_CLASSES_ROOT\py_auto_file\shell\open\command


30
해도 assocftype정확한 정보를 표시, 인수가 벗겨되어 발생할 수 있습니다. 이 경우 도움이 될 수있는 것은 Python 관련 레지스트리 키를 직접 수정하는 것입니다. HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\command키를 다음과 같이 설정하십시오 . "C:\Python26\python26.exe" "%1" %* 이전 %*에 누락되었을 가능성 이 있습니다. 마찬가지로 HKEY_CLASSES_ROOT\py_auto_file\shell\open\command동일한 값으로 설정 하십시오. eli.thegreenplace.net/2010/12/14/…
parvus

5
@parvus 귀하의 의견은 저에게 최고의 솔루션이었습니다. 연결이 올바르게 읽혀도이 두 키가 모두 잘못 설정되었습니다.
Nathan Cox

1
특히 AppVeyor 테스트에서 Python 스크립트를 실행하려고 할 때 HKEY_CLASSES_ROOT \ .py \ OpenWithProgids가 VisualStudio 관련 항목으로 설정되는 문제도 발생했습니다. help.appveyor.com/discussions/problems/…를 참조하십시오 .
Jack O'Connor

1
비슷한 문제가 있습니다. Anaconda는 기본적으로 누락 된 % * 레지스트리 키 추가
prasad

Win10 나는 쓰기에서 test.py 123내가 얻을 123로 인쇄 sys.argv[1]. Microsoft가 무언가를 변경 했습니까?
Hrvoje T

22

python 파일을 처리하는 기본 응용 프로그램을 python.exe로 만들어야합니다.

* .py 파일을 마우스 오른쪽 버튼으로 클릭하고 "연결 프로그램"대화 상자를 선택합니다. 거기에서 "python.exe"를 선택하고 "이 파일 유형에 대해 항상이 프로그램 사용"을 선택하십시오 (그와 유사한 것).

그러면 파이썬 파일은 항상 python.exe를 사용하여 실행됩니다.


16

또한 파일 이름 끝에 .py(또는 .pyw)을 입력하지 않고 Python 스크립트를 실행 하려면 PATHEXT 환경 변수의 확장 목록에 추가 .PY(또는 .PY;.PYW)해야합니다.

Windows 7에서

컴퓨터를 마우스 오른쪽 단추로 클릭
하고 속성을 클릭 왼쪽
고급 시스템 설정을 클릭 왼쪽
고급 탭을 클릭 왼쪽
... 환경 변수를 클릭 왼쪽
당신이 PATHEXT이 나타날 때까지 "시스템 변수"에서 아래로 스크롤
마우스 왼쪽 버튼을 클릭 PATHEXT에 그것을 강조하기 위해
왼쪽, 편집 ...을 클릭하십시오.
"변수 값"이 포함되도록 편집하십시오 ;.PY (End 키는 끝으로 건너 뜁니다).
왼쪽 클릭 확인
왼쪽 클릭 확인
왼쪽 클릭 확인

참고 # 1 : 명령 프롬프트 창은 닫았다가 다시 열리지 않은 상태에서 변경 사항을 볼 수 없습니다.

참고 # 2 : 차이 .py.pyw 확장 은 전자는 실행시 명령 프롬프트를 열고 후자는 열지 않는다는 것입니다.

내 컴퓨터 ;.PY;.PYW에서 마지막 (최저 우선 순위) 확장으로 추가 했으므로 PATHEXT의 "이전"및 "이후"값은 다음과 같습니다.

전에: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW

다음은 몇 가지 유용한 명령입니다.

C:\>echo %pathext%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Python32\python.exe" "%1" %*

C:\>assoc .pyw
.pyw=Python.NoConFile

C:\>ftype Python.NoConFile
Python.NoConFile="C:\Python32\pythonw.exe" "%1" %*

C:\>type c:\windows\helloworld.py
print("Hello, world!")  # always use a comma for direct address

C:\>helloworld
Hello, world!

C:\>

4

Windows에서 Python 스크립트를 실행하는 방법은 무엇입니까?

pylauncher를 설치할 수 있습니다. .py, .pyw, .pyc, .pyo 파일을 시작하는 데 사용되며 여러 Python 설치를 지원합니다.

T\:> blah.py argument

PATHEXT 환경 변수에 .py, .pyw가있는 경우 .py 확장자를 지정하지 않고 Python 스크립트를 실행할 수 있습니다.

T:\> blah argument

#!여러 버전이 설치된 경우 Windows에서 원하는 Python 버전을 선택할 수 있도록 shebang ( 헤더 행)에 대한 지원을 추가합니다 . * nix 호환 구문을 사용할 수 있습니다 #! /usr/bin/env python.

버전을 명시 적으로 지정할 수 있습니다. 예를 들어 최신 설치된 Python 3 버전을 사용하여 실행할 수 있습니다.

T:\> py -3 blah.py argument

또한 sys.argv부작용으로 문제를 해결해야 합니다.


Python Launcher는 베타 상태입니다.
Nicolas Barbulesco 2015 년

@NicolasBarbulesco : Python 런처가 Python 3.3에 포함되어 있습니다. 즉, 충분합니다
jfs

아마도. 그러나 Windows에 Python 3을 설치하는 데 성공하지 못했습니다 . 여기서 나를 도울 수있을 것입니다.
Nicolas Barbulesco 2015 년

4

동일한 문제가 발생했지만 Windows 사용자 (Linux에서 제공)를 위해 코드를 패키징해야한다는 맥락에서 발생했습니다. 내 패키지에는 명령 줄 옵션이있는 여러 스크립트가 포함되어 있습니다.

명령 줄에서 호출 할 수 있도록 Windows 사용자 컴퓨터의 적절한 위치에 설치하려면 이러한 스크립트가 필요합니다. 패키지가 사용자 친화적이기 때문에 사용자에게 이러한 스크립트를 실행하기 위해 레지스트리를 변경하도록 요청하는 것은 불가능합니다.

Continuum의 사람들이 Anaconda 패키지와 함께 제공되는 Python 스크립트에 사용하는 솔루션을 발견했습니다. 예제는 Anaconda / Scripts 디렉토리를 확인하십시오.

Python 스크립트의 test경우 a test.bat및 a test-script.py.

test.bat다음과 같이 보입니다 ( 내 목적에 맞게 조정 한 상대 경로를 가진 호출 .bat파일 ).Anaconda\Scriptspython.exe

@echo off
set PYFILE=%~f0
set PYFILE=%PYFILE:~0,-4%-script.py
"python.exe" "%PYFILE%" %*

test-script.py 실제 Python 스크립트입니다.

import sys
print sys.argv

이 두 파일을 로컬 디렉토리에 남겨두면 다음 .bat을 수행 하여 파일을 통해 Python 스크립트를 호출 할 수 있습니다.

test.bat hello world
['C:\\...\\test-scripy.py', 'hello', 'world']

두 파일을 사용자의 위치 PATH(예 :)에 복사 Anaconda\Scripts하면 .bat접미사 를 생략하여 스크립트를 호출 할 수도 있습니다.

test hello world
['C:\\...Anaconda\\Scripts\\test-scripy.py', 'hello', 'world']

면책 조항 : 나는 무슨 일이 일어나고 있는지, 이것이 어떻게 작동하는지 전혀 모릅니다. 그래서 어떤 설명을 주시면 감사하겠습니다.


.bat각 Python 스크립트에 대한 래퍼를 만드는 것은 서투르고 중복됩니다. 나는 이것을 권장하지 않습니다.
tripleee

2

윈도우 ,

"python"을 입력하지 않고 파이썬 모듈실행 하려면 ,

-> python (*. py) 파일을 마우스 오른쪽 버튼으로 클릭

-> 열기 속성을 "python.exe"로 설정합니다.

-> "이 파일 유형에 항상이 프로그램 사용"을 선택하십시오.

-> python.exe의 경로를 변수 환경에 추가합니다. 예를 들어 C : \ Python27을 PATH 환경 변수에 추가합니다.

".py"확장자를 입력하지 않고 파이썬 모듈실행 하려면

-> PATHEXT 시스템 변수를 편집하고 ".PY"확장자를 목록에 추가합니다.


1

여기 에서 매우 유용한 답변을 찾았 습니다 : cmd에서 다른 파이썬 버전을 실행하는 방법?

얼마 전에 Python 3.3에 도입 된 Windows 용 Python Launcher 유틸리티를 사용하는 것이 좋습니다. 또한 이전 버전의 Python 2 및 3에서 사용하기 위해 작성자의 웹 사이트에서 직접 수동으로 다운로드하고 설치할 수도 있습니다.

어떻게 구했는지에 관계없이 설치 후 모든 표준 Python 파일 확장자 (예 : .py, .pyw, .pyc 및 .pyo 파일)와 연결됩니다. 명령 프롬프트에서 사용되는 버전을 명시 적으로 제어 할 수있을뿐만 아니라 Linux / Unix-y shebang #! / usr / bin / env pythonX 주석을 추가하여 스크립트별로 스크립트별로 제어 할 수 있습니다. Python 스크립트의 시작입니다.

JF Sebastian이 제안했듯이 Windows 용 Python Launcher는 Windows 에서 다른 버전의 Python을 실행하는 데 가장 적합한 기본 선택입니다. 이전에는 타사 도구 였지만 이제는 Python 3.3부터 공식적으로 지원됩니다.

버전 3.3의 새로운 기능.

Windows 용 Python 런처는 다양한 Python 버전의 위치와 실행을 지원하는 유틸리티입니다. 스크립트 (또는 명령 줄)가 특정 Python 버전에 대한 기본 설정을 나타내도록 허용하고 해당 버전을 찾아 실행합니다.

이것은 훌륭한 도구입니다.


0

모든지도에서 python.exe를 실행할 수 있습니까? 그렇지 않은 경우 PATH 환경에서 python.exe에 대한 적절한 값이 있는지 확인하십시오.

blah.py와 동일한 디렉토리에 있습니까? 명령을 실행하여 확인-> blah.py를 편집하고이 파일을 열 수 있는지 확인하십시오.

편집하다:

그 경우에는 할 수 없습니다. ( python arg 는 실행하려는 스크립트의 파일 이름이라고 python이 가정하는 일부 매개 변수를 python.exe whit 호출하는 것을 의미합니다)

경로 맵에 bat 파일 whit 라인을 만들고 .bat 파일을 실행할 수 있습니다.

예 :
경로 맵 중 하나에서 blah.py.bat 파일을 편집하고 줄을 넣으십시오.

python C:\Somedir\blah.py

이제 bat 파일을 실행할 때 .bat 확장자를 넣을 필요가 없기 때문에 어디서든 blah.py를 실행할 수 있습니다.


PATH의 파이썬. 그리고 blah.py를 포함하는 디렉토리도 PATH에 있습니다. 주요 아이디어는 전체 경로를 작성하지 않고 Python 스크립트를 실행하는 것입니다. 그러나 이제 나는 논쟁이 통과하는 데 문제가 있습니다.
ton4eg 2009

3
Ralu, 이런 식으로 파이썬 스크립트를 실행하기 위해 배치 파일이 필요하지 않습니다. PATHEXT 환경 변수를 사용하여 .py 및 .pyw를 실행 가능한 확장자로 포함하십시오. 이 변수는 .bat를 지정할 필요가없는 이유입니다.
Todd

0

그것이 내가 이해 한 것이라면 다음과 같습니다.

C:\Users\(username)\AppData\Local\Programs\Python\Python(version)

python.exe를 복사 (삭제하지 않음)하고 이름을 py.exe로 변경하고 실행합니다.

py filename.py

0

다음 명령을 실행하기 만하면됩니다.

C:>python .\file_name.py

파일 이름이 동일한 폴더에 있고 Python이 이미 환경 변수에 추가되었다고 가정합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.