Pip: `pip uninstall` gagal saat dipanggil di direktori sumber paket

Dibuat pada 12 Jul 2019  ·  3Komentar  ·  Sumber: pypa/pip

Lingkungan

  • versi pip: 19.1.1
  • Versi Python: 3.6.8
  • OS: macOS

Keterangan

Saya menginstal paket lokal, spam , menggunakan python3 -m pip install --user . . Jika saya mencoba untuk menghapus paket saya ketika folder paket berada di direktori saat ini, saya mendapatkan yang berikut:

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

Penghapusan instalasi berhasil diselesaikan ketika saya menjalankannya dari direktori lain:

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

Perilaku yang diharapkan
Saya tidak berharap uninstall peka terhadap konten direktori lokal. Jika ini adalah perilaku yang diharapkan karena alasan teknis, saya akan mengubah pesan stderr Can't uninstall 'spam'. No files were found to uninstall. menjadi lebih membantu dalam menunjukkan bahwa kegagalan mungkin karena ada folder lokal dengan nama paket target.

UX UX- error messages enhancement

Komentar yang paling membantu

@pfmoore Saya pikir pesan yang Anda edit jelas merupakan peningkatan (dan akan menghemat waktu saya), tetapi saya akan melangkah lebih jauh. Bagaimana dengan sesuatu yang lebih instruktif, seperti 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. (dan ubah system library jika ada istilah yang lebih tepat). Apakah itu terlalu bertele-tele?

Sepertinya satu-satunya saat seseorang akan menemukan pesan ini adalah jika mereka berada dalam situasi yang sama denganku. Saya mungkin salah, tetapi menghapus instalan dari direktori saat ini seperti cd path/to/site-packages && python3 -m pip uninstall spam tampaknya seperti kasus penggunaan yang kecil, dan jika seseorang cukup tahu untuk melakukan itu, maka pesan yang disetel untuk orang yang bernapas dengan mulut seperti saya tidak akan membingungkan mereka.

Tampaknya sebagian besar pengguna hanya berasumsi – seperti yang saya lakukan ;-) – bahwa uninstall akan secara ajaib mencari paket di perpustakaan sistem.

Semua 3 komentar

Mungkin mengubah kesalahan dalam kasus ini untuk mengatakan Can't uninstall 'spam' (found in current directory). No files were found to uninstall. ?

@pfmoore Saya pikir pesan yang Anda edit jelas merupakan peningkatan (dan akan menghemat waktu saya), tetapi saya akan melangkah lebih jauh. Bagaimana dengan sesuatu yang lebih instruktif, seperti 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. (dan ubah system library jika ada istilah yang lebih tepat). Apakah itu terlalu bertele-tele?

Sepertinya satu-satunya saat seseorang akan menemukan pesan ini adalah jika mereka berada dalam situasi yang sama denganku. Saya mungkin salah, tetapi menghapus instalan dari direktori saat ini seperti cd path/to/site-packages && python3 -m pip uninstall spam tampaknya seperti kasus penggunaan yang kecil, dan jika seseorang cukup tahu untuk melakukan itu, maka pesan yang disetel untuk orang yang bernapas dengan mulut seperti saya tidak akan membingungkan mereka.

Tampaknya sebagian besar pengguna hanya berasumsi – seperti yang saya lakukan ;-) – bahwa uninstall akan secara ajaib mencari paket di perpustakaan sistem.

Mungkin 'komputer Anda' akan lebih baik daripada 'perpustakaan sistem'?

Iterasi atas saran Anda @reynoldsnlp :

Tidak dapat menghapus 'spam' (di direktori saat ini). Tidak ada file yang ditemukan untuk dihapus.\nUntuk menghapus 'spam' dari komputer Anda, jalankan perintah yang sama dari direktori yang tidak berisi direktori 'spam'.

Apakah lebih jelas?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat