Ejecute scripts de Python en PowerShell directamente

22

Estoy usando Windows PowerShell. Digamos que tengo un script llamado test.pyque imprime algunas cosas. Si lo hago:

PS D:\>.\test.py

luego abre una ventana CMD que imprime algunas cosas y luego se cierra. En realidad, está ejecutando el intérprete de Python en CMD. Si lo hago

PS D:\>python test.py

actúa como lo esperaría, y la salida aparece en PowerShell.

¿Cómo puedo hacer que el script se ejecute en PowerShell cuando solo doy su nombre?

jcrawfordor
fuente
Una vez que haya actualizado su PATHEXTvariable usando la respuesta aceptada de zdan a continuación, si coloca los scripts de Python en un directorio nombrado por su PATHvariable de entorno, ya no será necesario proporcionar una ruta totalmente calificada (o relativa) para ejecutarlos. Luego, los scripts de Python se comportan como cualquier otro programa instalado, y puede unirlos en canalizaciones con otros programas / cmdlets ( por ejemplo get-clipboard | myscript.py ), y todas esas otras bondades. :)
TheDudeAbides

Respuestas:

24

Edite la variable de entorno PATHEXT y agregue la extensión .py.

Simplemente agregue esta línea a su perfil de PowerShell :

$env:PATHEXT += ";.py"

o simplemente puede editar PATHEXT globalmente en la configuración del sistema (solo busque "entorno" en el menú Inicio y elija la opción "Editar variables de entorno para su cuenta").

zdan
fuente
-1

Es posible que tenga instalada más de una versión de Python y la versión que IDLE está usando es más nueva. Para ver qué versión de Python tiene, puede escribir> python -V en una línea de comando. Si esa versión parece apropiada, entonces podría necesitar la ruta completa al archivo como segundo parámetro. Por ejemplo, python C: \ myfile.py.

Si instaló Python correctamente, siempre existe la posibilidad de que simplemente escribiendo el nombre del script lo ejecute con python. Por ejemplo, myfile.py

Siempre encuentro que agregar C: \ Python27 a la variable% PATH% y .PY a la variable% PATHEXT% facilita la ejecución de scripts. En este caso, solo> myfile debería funcionar.

Editar después de la actualización:

Escribir solo> python sin parámetros abre python en 'modo interactivo', que es diferente del modo por lotes o scripts para el que está destinado su script. Si se ejecuta con argumentos, el primer argumento se toma como la ruta del archivo y otros argumentos se pasan al script en la lista sys.argv.

Supri Adi
fuente
¿Por qué copia y pega su respuesta desde algún lugar? Incluso se olvidó de copiar el formato correctamente y no había "Actualización" allí.
slhck