usar programa por parametros linea interprete ejecutar desde cómo consola compilar como comandos archivo python windows registry command-line-arguments file-association

por - Windows no está pasando argumentos de línea de comandos a los programas de Python ejecutados desde el shell



interprete de python (8)

Aquí hay archivos .reg para arreglar para Python 3.6, 2.7 y Anaconda3:

python-3.6.0.reg

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT/.py] @="Python.File" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/.pyc] @="Python.CompiledFile" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/.pyw] @="Python.NoConFile" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/py_auto_file] [HKEY_CLASSES_ROOT/py_auto_file/DefaultIcon] @="C://Python36//DLLs//py.ico" [HKEY_CLASSES_ROOT/py_auto_file/shell/open/command] @="/"C://Python36//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.File] @="Python File" [HKEY_CLASSES_ROOT/Python.File/DefaultIcon] @="C://Python36//DLLs//py.ico" [HKEY_CLASSES_ROOT/Python.File/shell/open/command] @="/"C://Python36//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.CompiledFile] @="Compiled Python File" [HKEY_CLASSES_ROOT/Python.CompiledFile/DefaultIcon] @="C://Python36//DLLs//pyc.ico" [HKEY_CLASSES_ROOT/Python.CompiledFile/shell/open/command] @="/"C://Python36//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.NoConFile] @="Python File (no console)" [HKEY_CLASSES_ROOT/Python.NoConFile/DefaultIcon] @="C://Python36//DLLs//py.ico" [HKEY_CLASSES_ROOT/Python.NoConFile/shell/open/command] @="/"C://Python36//python.exe/" /"%1/" %*"

python-2.7.0.reg

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT/.py] @="Python.File" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/.pyc] @="Python.CompiledFile" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/.pyw] @="Python.NoConFile" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/py_auto_file] [HKEY_CLASSES_ROOT/py_auto_file/DefaultIcon] @="C://Python27//DLLs//py.ico" [HKEY_CLASSES_ROOT/py_auto_file/shell/open/command] @="/"C://Python27//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.File] @="Python File" [HKEY_CLASSES_ROOT/Python.File/DefaultIcon] @="C://Python27//DLLs//py.ico" [HKEY_CLASSES_ROOT/Python.File/shell/open/command] @="/"C://Python27//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.CompiledFile] @="Compiled Python File" [HKEY_CLASSES_ROOT/Python.CompiledFile/DefaultIcon] @="C://Python27//DLLs//pyc.ico" [HKEY_CLASSES_ROOT/Python.CompiledFile/shell/open/command] @="/"C://Python27//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.NoConFile] @="Python File (no console)" [HKEY_CLASSES_ROOT/Python.NoConFile/DefaultIcon] @="C://Python27//DLLs//py.ico" [HKEY_CLASSES_ROOT/Python.NoConFile/shell/open/command] @="/"C://Python27//python.exe/" /"%1/" %*"

ananconda3.reg (cambiar nombre de usuario)

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT/.py] @="Python.File" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/.pyc] @="Python.CompiledFile" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/.pyw] @="Python.NoConFile" "Content Type"="text/plain" [HKEY_CLASSES_ROOT/py_auto_file] [HKEY_CLASSES_ROOT/py_auto_file/DefaultIcon] @="C://Users//username//Anaconda3//DLLs//py.ico" [HKEY_CLASSES_ROOT/py_auto_file/shell/open/command] @="/"C://Users//username//Anaconda3//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.File] @="Python File" [HKEY_CLASSES_ROOT/Python.File/DefaultIcon] @="C://Users//username//Anaconda3//DLLs//py.ico" [HKEY_CLASSES_ROOT/Python.File/shell/open/command] @="/"C://Users//username//Anaconda3//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.CompiledFile] @="Compiled Python File" [HKEY_CLASSES_ROOT/Python.CompiledFile/DefaultIcon] @="C://Users//username//Anaconda3//DLLs//pyc.ico" [HKEY_CLASSES_ROOT/Python.CompiledFile/shell/open/command] @="/"C://Users//username//Anaconda3//python.exe/" /"%1/" %*" [HKEY_CLASSES_ROOT/Python.NoConFile] @="Python File (no console)" [HKEY_CLASSES_ROOT/Python.NoConFile/DefaultIcon] @="C://Users//username//Anaconda3//DLLs//py.ico" [HKEY_CLASSES_ROOT/Python.NoConFile/shell/open/command] @="/"C://Users//username//Anaconda3//python.exe/" /"%1/" %*"

Tengo problemas para obtener los argumentos de línea de comando pasados ​​a los programas de Python si intento ejecutarlos directamente como comandos ejecutables desde un shell de comandos de Windows. Por ejemplo, si tengo este programa (test.py):

import sys print "Args: %r" % sys.argv[1:]

Y ejecutar:

>test foo Args: []

en comparación con:

>python test.py foo Args: [''foo'']

Mi configuración tiene:

PATH=...;C:/python25;... PATHEXT=...;.PY;.... >assoc .py .py=Python.File >ftype | grep Python Python.CompiledFile="C:/Python25/python.exe" "%1" %* Python.File="C:/Python25/python.exe" "%1" %* Python.NoConFile="C:/Python25/pythonw.exe" "%1" %*


Comprobé todas las claves de registro con python.exe y py_auto_file y les hice apuntar a mi instalación actual de python, incluyendo th %* al final que pasa los argumentos. Eran bastantes:

  • HKEY_CLASSES_ROOT / Applications / python.exe / shell / open / command:

    • org: "C: / miniconda3 / python.exe" "% 1" "% *"
    • cambiado: "C: / Python35 / python.exe" "% 1" "% *"
  • HKEY_CLASSES_ROOT / py_auto_file / shell / open / command

    • org: "C: / Archivos de programa / Sublime Text 3 / sublime_text.exe" "% 1"
    • cambiado: "C: / Python35 / python.exe" "% 1" "% *"
  • HKEY_CURRENT_USER / Software / Classes / py_auto_file / shell / open / command

    • org: "C: / Python35 / python.exe" "% 1" "% *"
  • HKEY_USERS / S-1-5-21-2621213409-1291422344-4183577876-2165 / Software / Classes / py_auto_file / shell / open / command

    • org: "C: / Python35 / python.exe" "% 1" "% *"
  • HKEY_USERS / S-1-5-21-2621213409-1291422344-4183577876-2165_Classes / py_auto_file / shell / open / command

    • org: "C: / Python35 / python.exe" "% 1" "% *"
  • HKEY_CLASSES_ROOT / Applications / pythonw.exe / shell / open / command

    • org: "C: / Python34 / pythonw.exe" "% 1"
    • cambiado: "C: / Python35 / pythonw.exe" "% 1" "% *"
  • HKEY_CURRENT_USER / Software / Classes / Applications / python.exe / shell / open / command

    • org: "C: / Python35 / python.exe" "% 1" "% *"

Pero eso no hizo el trabajo por mí. Tuve que cambiar mi aplicación predeterminada de Python también.

Como se puede ver, tengo 3 versiones de Python instaladas. Es imposible ver cuál es cuál aquí, así que probé las tres como mi aplicación predeterminada de Python. Eventualmente pude obtener los argumentos de mi script con uno de estos tres.


Creo que resolví esto. Por alguna razón, hay un SEGUNDO lugar en el registro (además del mostrado por las asociaciones de archivos almacenadas en HKEY_CLASSES_ROOT / Python.File / shell / open / command):

[HKEY_CLASSES_ROOT/Applications/python.exe/shell/open/command] @="/"C://Python25//python.exe/" /"%1/" %*"

Esta parece ser la configuración de control en mi sistema. La configuración de registro anterior agrega el "% *" para pasar todos los argumentos a python.exe (por alguna razón, faltaba en mi registro).


Interesante. Funciona aquí utilizando python 2.6 y Windows XP (5.1.2600):

C:/Documents and Settings/hbrown>python test.py foo [''test.py'', ''foo''] C:/Documents and Settings/hbrown>test.py foo [''C://Documents and Settings//hbrown//test.py'', ''foo''] C:/Documents and Settings/hbrown>test foo [''C://Documents and Settings//hbrown//test.py'', ''foo''] C:/Documents and Settings/hbrown>type test.py import sys print sys.argv C:/Documents and Settings/hbrown>echo %PATHEXT% .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PY C:/Documents and Settings/hbrown>assoc .py .py=Python.File


Las asociaciones de tu programa para archivos .py podrían estar en mal estado. Simplemente vuelve a asociar archivos .py con tu ejecutable de python.

Haga clic con el botón derecho en un archivo .py > Open with > Choose default program ... > [buscar C: / PythonXY / python.exe]


Mi configuración estaba bajo otra clave de registro, HKEY_CLASSES_ROOT/py_auto_file . Las otras claves mencionadas también existían, pero Windows usaba esta por alguna razón.


Para Python 3.3 en Windows 7, mi configuración estaba bajo otra clave de registro; la clave que cambié para hacer que los argumentos pasaran era

HKEY_USERS/S-1-5-21-3922133726-554333396-2662258059-1000_Classes/py_auto_file/shell/open/command

Era "C:/Python/Python33/python.exe" "%1" . Solo agregué %* a él. El valor de la clave ahora es "C:/Python/Python33/python.exe" "%1" %* .

Tenía varias (al menos cinco) otras claves con el valor "C:/Python/Python33/python.exe" "%1" , pero esta es la que modifiqué que la hizo funcionar.


Para que funcione para mí, tuve que usar la ruta de registro:

HKEY_CLASSES_ROOT/py_auto_file/shell/open/command

y agregó un %*