Большое спасибо за большинство других ответов, которые помогли мне найти решение!
Мой случай заключался в том, чтобы открывать .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\" %*"
person
and1er
schedule
29.07.2020
Python.File
в свой реестр? - person Piotr Dobrogost   schedule 22.10.2011[HKCU|HKLM]\SOFTWARE\Classes\Applications\python.exe
или[HKCU|HKLM\SOFTWARE\Classes\py_auto_file
, значит, она неправильно настроена, и неверные ключи следует удалить. Затем используйте проводник (откройте с помощью или приложения настроек ассоциации файлов), чтобы выбрать правильную запись Python, которая использует стандартный[HKCU|HKLM]\SOFTWARE\Classes\Python.File
ProgId. Проверьте подразделshell\open\command
в regedit. Если установлен Python 3, шаблон команды должен использовать средство запуска py. Если лаунчер установлен для всех пользователей, шаблон должен быть"C:\Windows\py.exe" "%1" %*
. - person Eryk Sun   schedule 09.06.2016assoc
иftype
отображают и изменяют толькоHKLM\SOFTWARE\Classes
, поэтому им требуется доступ администратора для записи в реестр, и они не являются правильными инструментами для использования, если Python установлен для текущего пользователя. Вы должны использовать regedit для изменения настроек для каждого пользователя вHKCU\SOFTWARE\Classes
, которые имеют приоритет над настройкамиHKLM
. Кроме того, связь с ProgId всегда должна управляться через проводник, а не черезassoc
. Проводник сохраняет выбор пользователя вHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts
. - person Eryk Sun   schedule 09.06.2016