Cómo ejecutar un script de Python de forma portátil sin especificar su ruta completa

¿Existe una forma portátil de ejecutar un script de Python desde un shell sin escribir su ruta completa?

Por ejemplo, en Linux, me gustaría estar en mi directorio personal

<code>cd ~
</code>

para poder ejecutar un script de python llamado run.py que está en, por ejemplo, ~ / long / path / to / run.py, pero quiero ejecutarlo simplemente escribiendo

<code>python run.py
</code>

en lugar de

<code>python ~/long/path/to/run.py
</code>

Espero algún tipo de lista de rutas de búsqueda que contenga varios directorios al igual que la variable PATH, de modo que python run.py ejecute el primer run.py que encuentre en uno de los directorios.

He considerado convertir run.py en un ejecutable y agregar su directorio a la variable PATH del sistema, pero no pude encontrar una forma portátil de hacer ejecutable un script de Python.

EDITAR

Un año después de haberlo preguntado, soy un poco menos novato, y veo que mi pregunta no era muy clara y no tenía mucho sentido, así que después de una pregunta, voy a aclarar algunas cosas.

1) Portátil.

Cuando pregunté esto dije portátil. Sin embargo, qué medios portátiles no están claros en este caso, y no le di mucha importancia.

Las plataformas: deberían funcionar en POSIX (Linux, MacOS, etc.) y Windows.

Esto todavía no tiene mucho sentido ya que usa Windowscmd.exe, y POSIX utilizash, por lo que cada uno podría ejecutar los comandos con una sintaxis diferente. Así que digamos que lo más portátil posible sería alimentar la misma entrada a ambossh ycmd.exe, ejecutando el script python en ambos casos. En este caso, podría ejecutar el mismo comando desde un ANSI Csystem función, que utilizash en POSIX ycmd en Windows. Dado que ANSI C es una de las pocas cosas que son comunes en Windows y POSIX, la pregunta tiene algún sentido en ese caso.

2) ejecutable

A continuación, la fraseturning run.py into an executable, no está muy claro. Por eso me refería a la estrategia de Linux dechmod +x run.py, agrega un shebang#!/usr/bin/env pythony, agregando su directorio, el sistema agrega ~ / long / path / a / la variable de entorno PATH. Pero esto no funcionará para Windows porque Windows no admite una propiedad de metadatos de archivos ejecutables como Linux y porque / usr / bin / env no necesariamente existe en Windows.

3) Extensión

Finalmente, en mi cabeza esperaba una solución que no especificara qué tipo de archivo se ejecuta, de modo que si algún día decidiéramos hacerlo, por ejemplo, un archivo perl, ninguna interfaz cambiaría.

Por lo tanto, escribiendorun.py sería malo porque especificaría el tipo de archivo; Sería mejor poder escribir solorun

Respuestas a la pregunta(4)

Su respuesta a la pregunta