Pip: `pip uninstall` не работает при вызове в исходном каталоге пакета

Созданный на 12 июл. 2019  ·  3Комментарии  ·  Источник: pypa/pip

Окружающая обстановка

  • версия пипа: 19.1.1
  • Версия Python: 3.6.8
  • ОС: макОС

Описание

Я установил локальный пакет spam , используя python3 -m pip install --user . . Если я попытаюсь удалить свой пакет, когда папка пакета находится в текущем каталоге, я получу следующее:

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

Удаление завершается успешно, когда я запускаю его из другого каталога:

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

Ожидаемое поведение
Я не ожидал, что uninstall будет чувствителен к содержимому локального каталога. Если это ожидаемое поведение по техническим причинам, я бы изменил сообщение stderr Can't uninstall 'spam'. No files were found to uninstall. , чтобы оно было более полезным и указывало на то, что сбой может быть вызван тем, что существует локальная папка с именем целевого пакета.

UX UX- error messages enhancement

Самый полезный комментарий

@pfmoore Я думаю, что ваше отредактированное сообщение определенно является улучшением (и сэкономило бы мне время), но я бы пошел еще дальше. Как насчет чего-то более поучительного, например 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. (и изменить system library , если есть более точный термин). Это слишком многословно?

Кажется, что единственный раз, когда кто-то когда-либо сталкивался с этим сообщением, был в ситуации, похожей на мою. Я могу ошибаться, но удаление из текущего каталога, например, cd path/to/site-packages && python3 -m pip uninstall spam , кажется маргинальным вариантом использования, и если кто-то знает достаточно, чтобы сделать это, то сообщение, настроенное для дышащих ртом, таких как я, не смутит их.

Похоже, что большинство пользователей просто предполагают — как и я ;-) — что uninstall волшебным образом найдет пакет в системной библиотеке.

Все 3 Комментарий

Может быть, исправить ошибку в этом случае, чтобы сказать Can't uninstall 'spam' (found in current directory). No files were found to uninstall. ?

@pfmoore Я думаю, что ваше отредактированное сообщение определенно является улучшением (и сэкономило бы мне время), но я бы пошел еще дальше. Как насчет чего-то более поучительного, например 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. (и изменить system library , если есть более точный термин). Это слишком многословно?

Кажется, что единственный раз, когда кто-то когда-либо сталкивался с этим сообщением, был в ситуации, похожей на мою. Я могу ошибаться, но удаление из текущего каталога, например, cd path/to/site-packages && python3 -m pip uninstall spam , кажется маргинальным вариантом использования, и если кто-то знает достаточно, чтобы сделать это, то сообщение, настроенное для дышащих ртом, таких как я, не смутит их.

Похоже, что большинство пользователей просто предполагают — как и я ;-) — что uninstall волшебным образом найдет пакет в системной библиотеке.

Может быть, «ваш компьютер» лучше, чем «системная библиотека»?

Итерация по вашему предложению @reynoldsnlp :

Не удается удалить спам (в текущем каталоге). Файлов для удаления не найдено.\nЧтобы удалить спам с вашего компьютера, запустите ту же команду из каталога, который не содержит каталога спама.

Это яснее?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги