Как запускать скрипты Python в Windows?
у меня есть простой скрипт blah.py (с помощью Python 2):
import sys
print sys.argv[1]
Если я выполняю свой скрипт:
python c:/..../blah.py argument
он печатает аргумент, но если я выполняю скрипт:
blah.py argument
ошибка:
IndexError...
поэтому аргументы не передаются в скрипт.
python.exe в пути. Папка с blah.py также в пути.
питон.exe-это программа по умолчанию для выполнения файлов *.py.
что такое проблема?
10 ответов:
когда вы выполняете скрипт без ввода "python" спереди, вам нужно знать две вещи о том, как Windows вызывает программу. Во-первых, чтобы узнать, какой файл Windows думает, что это:
C:\>assoc .py .py=Python.FileДалее, вам нужно знать, как Windows выполняет все с таким расширением. Он связан с типом файла " Python.Файл", поэтому эта команда показывает, что она будет делать:
C:\>ftype Python.File Python.File="c:\python26\python.exe" "%1" %*так на моей машине, когда я печатаю "blah.py foo", он будет выполнять это точная команда, без разницы в результатах, чем если бы я сам набрал полную вещь:
"c:\python26\python.exe" "blah.py" fooесли вы наберете то же самое, включая кавычки, то вы получите результаты, идентичные тому, когда вы просто набираете "blah.py фу". Теперь вы в состоянии решить остальную часть вашей проблемы для себя.
(или опубликуйте более полезную информацию в своем вопросе, например, фактические вырезанные и вставленные копии того, что вы видите в консоли. Обратите внимание, что люди, которые делают этот тип конечно, их вопросы голосуют, и они получают очки репутации, и больше людей, вероятно, помогут им с хорошими ответами.)
Принес Из Комментариев:
даже если assoc и ftype отображают правильную информацию, может случиться так, что аргументы будут удалены. Что может помочь в этом случае, так это непосредственно исправить соответствующие разделы реестра для Python. Установите
HKEY_CLASSES_ROOT\Applications\python26.exe\shell\open\commandключ:
"C:\Python26\python26.exe" "%1" %*
вы должны сделать приложение по умолчанию для обработки файлов python python.исполняемый.
щелкните правой кнопкой мыши файл *.py, выберите диалоговое окно "Открыть с помощью". Там выберите " python.exe" и установите флажок "всегда использовать эту программу для этого типа файлов" (как-то так).
тогда ваши файлы python всегда будут запускаться с помощью python.exe
кроме того, если вы хотите иметь возможность запускать скрипты Python без ввода
.py(или.pyw) на конце имени файла, вам нужно добавить.PY(или.PY;.PYW) к списку расширений в переменной среды PATHEXT.В Windows 7:
щелкните правой кнопкой мыши на компьютер
щелкните левой кнопкой мыши Свойства
щелкните левой кнопкой мыши Дополнительные параметры системы
щелкните левой кнопкой мыши вкладку Дополнительно
щелкните левой кнопкой мыши Переменные среды...
под "системные переменные" прокрутите вниз, пока не увидите PATHEXT
щелкните левой кнопкой мыши на PATHEXT, чтобы выделить его
щелкните левой кнопкой мыши изменить...
Отредактируйте "значение переменной" так, чтобы оно содержало;.PY(клавиша завершения будет пропущена до конца)
щелкните левой кнопкой мыши OK
щелкните левой кнопкой мыши OK
щелкните левой кнопкой мыши OKПримечание #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:\>
я столкнулся с той же проблемой, но в контексте необходимости упаковки моего кода для пользователей Windows (из Linux). Мой пакет содержит несколько сценариев с параметрами командной строки.
мне нужно, чтобы эти сценарии были установлены в соответствующем месте на машинах пользователей Windows, чтобы они могли вызывать их из командной строки. Поскольку пакет предположительно удобен для пользователя, просить моих пользователей изменить свой реестр для запуска этих сценариев было бы невозможно.
я наткнулся на решение, которое люди в Continuum используют для скриптов Python, которые поставляются с их пакетом Anaconda - проверьте свой каталог Anaconda / Scripts для примеров.
для скрипта Python
testсоздайте два файла:test.batиtest-script.py.
test.batвыглядит следующим образом (.batфайлыAnaconda\Scriptsвызовpython.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если вы оставите эти два файла в папке вы можете вызвать свой скрипт 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']отказ от ответственности: я понятия не имею, что происходит и как это работает, и поэтому был бы признателен за любое объяснение.
как выполнять скрипты Python в Windows?
вы можете установить pylauncher. Он используется для запуска .пы, .pyw, .пыць, .pyo файлы и поддерживает несколько установок Python:
T\:> blah.py argumentвы можете запустить свой скрипт Python без указания расширения .py, если у вас есть .py, .pyw в переменной среды PATHEXT:
T:\> blah argumentон добавляет поддержку shebang (
#!строка заголовка), чтобы выбрать нужную версию Python в Windows если у вас установлено несколько версий. Вы можете использовать *Никс-совместимый синтаксис#! /usr/bin/env python.вы можете указать версию явно, например, для запуска с использованием последней установленной версии Python 3:
T:\> py -3 blah.py argumentон также должен исправить свой
sys.argvпроблема как побочный эффект.
On Windows,
до запустите модуль python без ввода "python",
--> щелкните правой кнопкой мыши любой файл python (*. py)
--> установите для свойства open with значение " python.EXE-файл"
--> поставьте галочку "Всегда использовать эту программу для этого типа файлов"
--> добавить путь python.exe в переменную среду, например, добавить C:\Python27 к переменной окружения PATH.
до запуск модуля python без ввода расширения". py"
--> изменить системную переменную PATHEXT и добавить расширение ".PY" в список.
вы можете выполнить python.exe с любой карты? Если вы этого не сделаете, проверьте, есть ли у вас правильные значения для python.exe в пути окружения
вы находитесь в том же каталоге, чем blah.py. проверьте это, выполнив команду - > edit blah.py и проверьте, можете ли вы открыть этот файл
EDIT:
в этом случае вы не можете. (python arg означает, что вы вызываете python.exe whit некоторые параметры, которые python предполагают, что это имя файла скрипта, который вы хотите беги)
вы можете создать bat file ничуть линии в вашей карте пути и запустить .bat file
пример:
В одной из карт путь создания мля.пы.летучая мышь Редактировать файл и поставить строкуpython C:\Somedir\blah.pyтеперь вы можете запустить blah.py из любого места, потому что вам не нужно ставить .расширение bat при запуске bat-файлов
нашли невероятно полезный ответ!--1-->здесь:как запустить различные версии python в cmd?
Я бы предложил использовать утилиту Python Launcher для Windows, которая была введена в Python 3.3 некоторое время назад. Вы также можете вручную загрузить и установить его непосредственно с веб-сайта автора для использования с более ранними версиями Python 2 и 3.
независимо от того, как вы его получите, после установки он будет связан сам со всеми стандартными расширениями файлов Python (т. е. .py, .pyw, .пик, И.гнойно-файлы). Вы не только сможете явно контролировать, какая версия используется в командной строке, но и на основе сценария по сценарию, добавив Linux/Unix-y shebang #!/usr/bin / env pythonX комментарии в начале ваших скриптов Python.
Как предлагает Дж. Ф. Себастьян,Python Launcher для Windows это лучший и стандартный выбор для запуска различных версий Python в Windows. Раньше это был сторонний инструмент, но теперь он официально поддерживается начиная с Python 3.3.
новое в версии 3.3.
Python launcher для Windows-это утилита, которая помогает в расположении и выполнении различных версий Python. Он позволяет скриптам (или командной строке) указывать предпочтения для конкретной версии Python, а также находить и выполнять эту версию.
Это отличный инструмент, просто использовать его!
Если это то, что я понял, это так:
C:\Users\(username)\AppData\Local\Programs\Python\Python(version)копировать (не удалять) python.exe и переименовать в py.exe и выполнить:
py filename.py
просто выполните команду:
C:>python .\file_name.pyпредполагая, что имя файла находится в той же папке и Python уже был добавлен в переменные среды.
Comments