Как запускать скрипты 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.



что такое проблема?

3341   10  

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

    Ничего не найдено.