Ambiente
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.
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?
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 mudesystem 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.