Pip: `pip uninstall` falha quando chamado no diretório de origem do pacote

Criado em 12 jul. 2019  ·  3Comentários  ·  Fonte: pypa/pip

Ambiente

  • versão pip: 19.1.1
  • Versão do Python: 3.6.8
  • SO: macOS

Descrição

Instalei um pacote local, spam , usando python3 -m pip install --user . . Se eu tentar desinstalar meu pacote quando a pasta do pacote estiver no diretório atual, recebo o seguinte:

$ pwd
/Users/me/spam
$ ls
README.md  setup.cfg  setup.py  test  tox.ini  spam
$ python3 -m pip uninstall --verbose spam
Not sure how to uninstall: spam 0.0.1 - Check: /Users/me/spam  # this line only shown with --verbose flag
Can't uninstall 'spam'. No files were found to uninstall.

A desinstalação é concluída com sucesso quando eu a executo de um diretório diferente:

$ cd \tmp && python3 -m pip uninstall --verbose spam
# successfully uninstalls...

Comportamento esperado
Eu não esperava que uninstall fosse sensível ao conteúdo do diretório local. Se esse for o comportamento esperado por motivos técnicos, eu alteraria a mensagem $ stderr Can't uninstall 'spam'. No files were found to uninstall. para ser mais útil ao indicar que a falha pode ser porque existe uma pasta local com o nome do pacote de destino.

UX UX- error messages enhancement

Comentários muito úteis

@pfmoore Acho que sua mensagem editada é definitivamente uma melhoria (e teria me poupado algum tempo), mas eu iria ainda mais longe. Que tal algo mais instrutivo, como Can't uninstall 'spam' (in current directory). No files were found to uninstall.\nTo uninstall 'spam' from the system library, run the same command from a directory without a 'spam' directory. (e mude system library se houver um termo mais preciso). Isso é muito verboso?

Parece que a única vez que alguém se depararia com essa mensagem é se estivesse em uma situação semelhante à minha. Posso estar errado, mas desinstalar do diretório atual como cd path/to/site-packages && python3 -m pip uninstall spam parece um caso de uso marginal, e se alguém souber o suficiente para fazer isso, uma mensagem ajustada para respiradores bucais como eu não os confundirá.

Parece que a maioria dos usuários apenas assume – como eu fiz ;-) – que uninstall vai magicamente encontrar o pacote na biblioteca do sistema.

Todos 3 comentários

Talvez altere o erro neste caso para dizer Can't uninstall 'spam' (found in current directory). No files were found to uninstall. ?

@pfmoore Acho que sua mensagem editada é definitivamente uma melhoria (e teria me poupado algum tempo), mas eu iria ainda mais longe. Que tal algo mais instrutivo, como Can't uninstall 'spam' (in current directory). No files were found to uninstall.\nTo uninstall 'spam' from the system library, run the same command from a directory without a 'spam' directory. (e mude system library se houver um termo mais preciso). Isso é muito verboso?

Parece que a única vez que alguém se depararia com essa mensagem é se estivesse em uma situação semelhante à minha. Posso estar errado, mas desinstalar do diretório atual como cd path/to/site-packages && python3 -m pip uninstall spam parece um caso de uso marginal, e se alguém souber o suficiente para fazer isso, uma mensagem ajustada para respiradores bucais como eu não os confundirá.

Parece que a maioria dos usuários apenas assume – como eu fiz ;-) – que uninstall vai magicamente encontrar o pacote na biblioteca do sistema.

Talvez 'seu computador' seja melhor do que 'biblioteca do sistema'?

Iteração na sua sugestão @reynoldsnlp :

Não é possível desinstalar 'spam' (no diretório atual). Nenhum arquivo foi encontrado para desinstalar.\nPara desinstalar o 'spam' do seu computador, execute o mesmo comando de um diretório que não contenha um diretório 'spam'.

Está mais claro?

Esta página foi útil?
0 / 5 - 0 avaliações