Pip: `pip uninstall` falla cuando se llama en el directorio fuente del paquete

Creado en 12 jul. 2019  ·  3Comentarios  ·  Fuente: pypa/pip

Ambiente

  • pip versión: 19.1.1
  • Versión de Python: 3.6.8
  • Sistema operativo: mac OS

Descripción

Instalé un paquete local, spam , usando python3 -m pip install --user . . Si trato de desinstalar mi paquete cuando la carpeta del paquete está en el directorio actual, obtengo lo siguiente:

$ 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.

La desinstalación se completa con éxito cuando la ejecuto desde un directorio diferente:

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

Comportamiento esperado
No esperaba que uninstall fuera sensible al contenido del directorio local. Si este es el comportamiento esperado por razones técnicas, cambiaría el mensaje $ stderr Can't uninstall 'spam'. No files were found to uninstall. para que sea más útil al indicar que la falla podría deberse a que hay una carpeta local con el nombre del paquete de destino.

UX UX- error messages enhancement

Comentario más útil

@pfmoore Creo que su mensaje editado es definitivamente una mejora (y me habría ahorrado algo de tiempo), pero iría aún más lejos. ¿Qué tal algo más instructivo, 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. (y cambie system library si hay un término más preciso). ¿Es eso demasiado detallado?

Parece que la única vez que alguien se toparía con este mensaje es si estuviera en una situación similar a la mía. Puede que me equivoque, pero la desinstalación del directorio actual como cd path/to/site-packages && python3 -m pip uninstall spam parece un caso de uso marginal, y si alguien sabe lo suficiente como para hacerlo, entonces un mensaje sintonizado para personas que respiran por la boca como yo no los confundirá.

Parece que la mayoría de los usuarios simplemente asumen, como yo lo hice ;-) – que uninstall va a encontrar mágicamente el paquete en la biblioteca del sistema.

Todos 3 comentarios

¿Quizás enmendar el error en este caso para decir Can't uninstall 'spam' (found in current directory). No files were found to uninstall. ?

@pfmoore Creo que su mensaje editado es definitivamente una mejora (y me habría ahorrado algo de tiempo), pero iría aún más lejos. ¿Qué tal algo más instructivo, 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. (y cambie system library si hay un término más preciso). ¿Es eso demasiado detallado?

Parece que la única vez que alguien se toparía con este mensaje es si estuviera en una situación similar a la mía. Puede que me equivoque, pero la desinstalación del directorio actual como cd path/to/site-packages && python3 -m pip uninstall spam parece un caso de uso marginal, y si alguien sabe lo suficiente como para hacerlo, entonces un mensaje sintonizado para personas que respiran por la boca como yo no los confundirá.

Parece que la mayoría de los usuarios simplemente asumen, como yo lo hice ;-) – que uninstall va a encontrar mágicamente el paquete en la biblioteca del sistema.

¿Quizás 'su computadora' sería mejor que 'biblioteca del sistema'?

Iteración de su sugerencia @reynoldsnlp :

No se puede desinstalar 'spam' (en el directorio actual). No se encontraron archivos para desinstalar.\nPara desinstalar 'spam' de su computadora, ejecute el mismo comando desde un directorio que no contenga un directorio de 'spam'.

¿Es más claro?

¿Fue útil esta página
0 / 5 - 0 calificaciones