Como executar um script Python portavelmente sem especificar seu caminho completo

Existe uma maneira portátil para executar um script python de um shell sem gravar seu caminho completo?

Por exemplo, no Linux, gostaria de, enquanto no meu diretório home

<code>cd ~
</code>

para poder executar um script python chamado run.py que está em, ~ / long / path / to / run.py, mas eu quero executá-lo simplesmente digitando

<code>python run.py
</code>

ao invés de

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

Eu esperaria por algum tipo de lista de caminho de busca que contenha vários diretórios como a variável PATH, para que o python run.py execute o primeiro run.py encontrado em um dos diretórios.

Eu considerei transformar o run.py em um executável e adicionar seu diretório a variável PATH do sistema, mas não consegui encontrar uma maneira portátil de fazer um script executável do python.

EDITAR

Um ano mais tarde, depois de perguntar, estou um pouco menos noob, e vejo que a minha pergunta não foi muito clara e não fazia muito sentido, por isso, depois de uma pergunta, vou esclarecer algumas coisas.

1) portátil.

Quando eu perguntei isso eu disse portátil. No entanto, o que meios portáteis não é claro, neste caso, e eu não dei muita ênfase a isso.

as plataformas: deve funcionar em POSIX (Linux, MacOS, etc.) e Windows

isso ainda não faz muito sentido, já que o Windows usacmd.exee POSIX usash, então cada um poderia executar os comandos com uma sintaxe diferente. Então, digamos que a coisa mais portátil possível seria alimentar a mesma entrada para ambossh ecmd.exe, executando o script python em ambos os casos. Nesse caso, você pode executar o mesmo comando de um ANSI Csystem função, que usash no POSIX ecmd no Windows. Sendo o ANSI C uma das poucas coisas comuns ao Windows e ao POSIX, a questão faz algum sentido nesse caso.

2) Executável

Em seguida, a fraseturning run.py into an executable, não é muito claro. Por isso eu estava falando sobre a estratégia Linux dechmod +x run.pyadicione um shebang#!/usr/bin/env python, e adicionando seu diretório, o sistema adiciona a variável de ambiente ~ / long / path / to / PATH. Mas isso não funcionará para o Windows porque o Windows não suporta uma propriedade de metadados de arquivo executável como o Linux e porque o / usr / bin / env não existe necessariamente no Windows.

3) Extensão

Finalmente, na minha cabeça, eu estava esperando por uma solução que não especificasse o tipo de execução de arquivo, de modo que, se algum dia decidirmos fazer, digamos, um arquivo perl, nenhuma interface mudaria.

Portanto, escrevendorun.py seria ruim porque especificaria o tipo de arquivo; seria melhor ser capaz de escrever apenasrun

questionAnswers(4)

yourAnswerToTheQuestion