Запускать скрипты 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/