Запускать скрипты Python из командной строки Windows, аргумент не передан

У меня есть куча скриптов, написанных на Python. Я запускаю их из командной строки Windows, например

c:> my_script.py arg1 arg2 arg3

Это работает на каждом компьютере и в каждой версии Windows, так как много лет назад. Только сейчас это сломалось в моей системе Windows 7. Загружается и выполняется script. Но ни один из аргументов не передается в script.

Чтобы проиллюстрировать это, у меня есть script с именем py_echo.py:

from pprint import pprint as pp
import sys

if __name__ =='__main__':
    pp(sys.argv)

Затем я выполняю его с аргументом a, b, c. Ни один из них не передан.

c:\Python27\Lib\site-packages>py_echo.py a b c
['C:\\0\\usr\\bin\\py_echo.py']

Если я запускаю python.exe явно, аргументы передаются правильно

c:\Python27\Lib\site-packages>python.exe c:\0\usr\bin\py_echo.py a b c
['c:\\0\\usr\\bin\\py_echo.py', 'a', 'b', 'c']

Он работал раньше. Он только начинает разрушаться после того, как я удалил с моего ПК пустую старую версию Python-интерпретатор и модули. Переустановка Python не помогает. Интересно, что я могу сделать, чтобы исправить это?

Я стал очень зависим от моих сценариев, которые я построил на протяжении многих лет. Я чувствую себя очень инвалидом, когда они ломаются: (

Ответы

Ответ 1

Чтобы переместить ответ на SO (а не ссылку в Jon answer):

Изменение следующих двух реестров, чтобы аргументы передавались вместе с Python:

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

Добавьте %* в существующий "C:\PythonXX\python.exe" "%1", так что теперь ключ выглядит следующим образом: "C:\PythonXX\python.exe" "%1" %*.

Источник: http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/

Ответ 2

У меня была такая же проблема с Windows 7/Python, и в итоге я обнаружил, что мне нужно было установить правильные ассоциации файлов и обновить две записи реестра через regedit.

Все это описано в этой замечательной статье:

http://eli.thegreenplace.net/2010/12/14/problem-passing-arguments-to-python-scripts-on-windows/