O que esse comando “sudo pip3 instala nome-do-arquivo.whl” faz?

2

Eu sei que sudo é um comando usado para tarefas dos administradores, como instalar ou desinstalar um programa.

O que eu não entendo deste comando:

sudo pip3 install name-of-the-file.whl

é o pip3 , que provavelmente é um argumento de sudo , mas para que serve?

Estou usando o Mac OSX 10.9.5.

    
por nbro 19.10.2014 / 13:13

1 resposta

4

O comando sudo é um programa de frontend que aceita argumentos, opções e comandos. A maioria dos comandos pode receber argumentos & switches, mas alguns podem ter outros comandos para executar. Pense neles como invólucros se quiser.

Portanto, sudo criará uma instância inteiramente nova do Bash (com privilégios elevados como root) e, em seguida, executará o comando fornecido por você.

Portanto, neste caso, sudo está executando o programa pip3 + todos os argumentos que ocorrem após ele. Esses argumentos são para pip3 , não para sudo . OBSERVAÇÃO: tenha em mente este modelo quando vir sudo :

$ sudo <switches> "<command> <command's arguments + switches>"

Então, o que é pip3?

Os comandos themsevles são frequentemente uma riqueza de informações quando você não tem certeza do que eles fazem. A maioria fornecerá uma breve sinopse de como usá-los e o que eles farão se você executá-los com a opção --help . Isso pode variar, às vezes é -help ou até -h .

Não tenho pip3 instalado, mas tenho pip2 . Eles são na verdade a mesma ferramenta, mas pip3 é uma versão mais recente.

$ pip2 --help

Usage:   
  pip <command> [options]

Commands:
  install                     Install packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  search                      Search PyPI for packages.
  zip                         Zip individual packages.
  unzip                       Unzip individual packages.
  bundle                      Create pybundles.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output.
  --log <file>                Log file where a complete (maximum verbosity) record will be kept.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --cert <path>               Path to alternate CA bundle.

O --help nos mostra o que essa ferramenta pode levar em termos de comandos e opções, mas não nos diz o que ela faz. Vamos ver onde ele está localizado. Para isso, você pode usar o comando type :

$ type -a pip2
pip2 is /usr/bin/pip2
pip2 is /bin/pip2

Observe que está em /usr/bin e /bin . Isso indica que nosso gerenciador de pacotes instalou essa ferramenta. Em uma distro baseada no Red Hat você poderia usar rpm para descobrir a qual pacote este executável, pip2 , pertence.

$ rpm -qf /bin/pip2
file /bin/pip2 is not owned by any package

Interessante, então este executável não está sendo gerenciado como parte da ferramenta de gerenciamento de pacotes do meu sistema, rpm .

Então, agora o que?

Bem, estamos longe de morrer. Vamos ver se o sistema pode nos dar alguma sugestão adicional sobre o que instalou pip2 .

A maioria das distribuições Linux é fornecida com mlocate , uma ferramenta que cria periodicamente um índice de todos os arquivos que estão no disco rígido. Assim, podemos procurar por pip2 para obter dicas de outros locais de locais onde partes dele podem estar à espreita.

$ locate pip2
/usr/bin/pip2
/usr/bin/pip2.7

Então sabemos que há 2 versões instaladas, 2 e 2.7. Mas isso não ajudou muito, então vamos aumentar um pouco a rede e procurar apenas pip . Também vamos filtrar os resultados um pouco e só obter resultados que terminem com pip . Usaremos grep para fazer isso.

$ locate pip | grep 'pip$'
/home/saml/.pip
/home/saml/dotfiles/.pip
/home/saml/dotfiles/.pyenv/shims/pip
/home/saml/dotfiles/.pyenv/versions/3.2.5/bin/pip
/home/saml/dotfiles/.pyenv/versions/3.2.5/lib/python3.2/site-packages/pip-1.3.1-py3.2.egg/pip
/opt/ec2-api-tools/bin/ec2apip
/opt/ec2-api-tools/bin/ec2upip
/usr/bin/pip
/usr/bin/python-pip
/usr/lib/python2.7/site-packages/pip

Jackpot!

Finalmente! Alguma informação útil. pip2 é uma ferramenta usada pela nossa instalação do Python. Então, se formos ao Google e procurar "pip python":

Oh! pip2 é um gerenciador de pacotes para Python.

Esse comando está instalando um arquivo .whl para a instalação do Python.

    
por 19.10.2014 / 17:29

Tags