Большое спасибо за большинство других ответов, которые помогли мне найти решение!
Мой случай состоял в том, чтобы открыть .py
файлы с помощью py.exe
(не python.exe
напрямую), этот случай был отмечен в нескольких комментариях, но я решил опубликовать это как отдельный ответ, чтобы подчеркнуть разницу.
Итак, у меня есть мои .py
файлы, связанные с конфигурацией, C:\Windows\py.exe
и у C:\Windows\py.ini
меня есть пара определений shebang
[commands]
<my_venv_py> = C:\Programs\my_venv_py\Scripts\python.exe
<my_venv_py_w> = C:\Programs\my_venv_py\Scripts\pythonw.exe
использовать в моих сценариях вот так #!<MY_VENV_PY>
.
А в Microsoft Windows 7 [версия 6.1.7601] мой скрипт python НЕ получал такие аргументы
script.py 1 2
но это сработало нормально
py script.py 1 2
Файловые ассоциации были в порядке
> assoc .py
.py=Python.File
> ftype | grep Python
File STDIN:
Python.CompiledFile="C:\Windows\py.exe" "%1" %*
Python.File=C:\Windows\py.exe "%L" %*
Python.NoConFile="C:\Windows\pyw.exe" "%1" %*
Я пробовал вносить много изменений в реестр, но последним помогло следующее изменение (сохранить в .reg
файл и запустить). Я нашел эту "%1"
строку поиска ключа реестра с начальным значением "C:\Windows\py.exe" "%1"
и добавил %*
в конце, как примечание других ответов:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Applications\py.exe\shell\open\command]
@="\"C:\\Windows\\py.exe\" \"%1\" %*"
Для информации, прежде чем я попытался настроить эти ключи и значения и не помог (по крайней мере, до указанного выше):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.py]
@="Python.File"
[HKEY_CURRENT_USER\Software\Classes\.py]
@="Python.File"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.py]
@="Python.File"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py]
@="Python.File"
[HKEY_CLASSES_ROOT\py_auto_file]
@="Python File"
[HKEY_CLASSES_ROOT\py_auto_file\shell\open\command]
@="\"C:\\Windows\\py.exe\" \"%1\" %*"
[HKEY_CLASSES_ROOT\Python.File]
@="Python File"
[HKEY_CLASSES_ROOT\Python.File\Shell\Open\command]
@="\"C:\\Windows\\py.exe\" \"%1\" %*"