Como tornar um script python um comando?

0

Estou tentando transformar um script python em um comando, por exemplo: ipaddr.py do Google ( link ). Eu quero ser capaz de digitar ipaddr e coloca o que eu quero. Isso é possível? Eu tentei torná-lo executável com chmod +x , depois movi-lo para /bin e ele ainda diz:

No command 'ipaddr' found, did you mean:
 Command 'ipmaddr' from package 'net-tools' (main)
 Command 'ibaddr' from package 'infiniband-diags' (universe)
ipaddr: command not found
    
por user269468 16.04.2014 / 11:57

2 respostas

2

% bl0ck_qu0te%

Verifique a seguinte página da wiki para exemplos:

link

Dependendo de suas necessidades, instalar o pacote python de pypi em todo o sistema e criar um script python (para mais tarde em /usr/bin ) é provavelmente a melhor opção para obter um utilitário de linha de comando usando o ipaddr .

    
por Sylvain Pineau 16.04.2014 / 12:07
2

Eu não estou familiarizado com o ipaddr, então só posso responder em geral, com o título da sua pergunta como ponto de partida:

Olhando para o comando que você usa (no seu post), você não usa a extensão .py . Se você não usá-lo em seu comando, você deve removê-lo do próprio script também (e torná-lo realmente executável). Eu olhei para o nome do script, é ipaddr * .py *.

E: se você quiser invocar o script fora de $ PATH, você terá que adicionar o caminho em seu comando também.

retomada:

Execução de um script fora de $ PATH:

Invocando um script com extensão de idioma - > nome do script deve incluir extensão:

    python /path/script_name.py (works if script is either executable or not)
    /path/script_name.py (works only if script is executable, mind the shebang)

Invocando um script sem extensão de idioma:

    /path/script_name (only if executable, mind the shebang)

A execução de um script em $ PATH pode ser feita com extensão de idioma, mas é considerada prática ruim, portanto - > nome do script não deve incluir extensão, execute-o pelo comando:

    script_name (works only if executable, mind the shebang)

É claro que, antes de renomear ou mover um script para outro diretório, você deve certificar-se de que o script não está importando nada do diretório do qual você está movendo e o próprio script não é invocado por outros scripts.

Para torná-lo mais complicado: se o script fizer parte de uma estrutura mais abrangente em seu próprio diretório, mas você ainda quiser invocá-lo separadamente por seu nome, poderá criar um link para o script em ~/bin ( ln-sf ).

Portanto, neste caso específico: mova o script para ~/bin , torne-o executável, remova sua extensão de idioma, efetue logout e in, e execute-o pelo nome. Ou seja, se o arquivo é / seria um script executável, como sua pergunta sugere.

    
por Jacob Vlijm 16.04.2014 / 17:46