Cara menghapus paket yang dapat diedit dengan pip (diinstal dengan -e)

107

Saya telah menginstal beberapa paket dengan -e

> pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev

Saya dengan pip freeze saya mengerti

> pip freeze
...
-e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
...

ketika saya mencoba untuk menghapus paket saya mendapatkan kesalahan:

> pip uninstall horus-dev
Cannot uninstall requirement horus-dev, not installed

> pip uninstall horus
Cannot uninstall requirement horus, not installed

Bagaimana cara menghapus paket seperti itu?

Michael_Scharf
sumber
pip uninstall <package> menghapus instalasi paket yang diinstal dalam mode editable di versi pip terbaru (milik saya adalah 19.1.1). Pastikan untuk menggunakan nama paket di setup.py, bukan alias yang Anda tentukan untuk memanggil paket itu di entry_points
picmate 涅
bagi orang-orang yang menggunakan conda, untuk mencopot pemasangan dalam mode pengembang di conda lakukan:conda develop -u .
Charlie Parker
Apakah Anda tahu mengapa pip uninstall yourpackagetidak berhasil? Seperti apa arti kesalahan Anda? Keluaran aneh dari perintah ...
Charlie Parker
Apakah Anda mencoba pip uninstall -e .atau python setup.py develop -u?
Charlie Parker
2
Bagi saya pip uninstall librarybekerja dengan baik. Jika Anda pergi ke jawaban yang disediakan OP sepertinya ada yang aneh dengan perpustakaannya yang rusak. Semoga ini menghemat waktu orang lain datang ke sini. Padahal, ada banyak opsi berbeda yang mungkin berhasil.
Charlie Parker

Jawaban:

90

Di {virtualenv}/lib/python2.7/site-packages/(jika tidak menggunakan virtualenv maka {system_dir}/lib/python2.7/dist-packages/)

  • hapus file telur (misalnya distribute-0.6.34-py2.7.egg) jika ada
  • dari file easy-install.pth, hapus baris yang sesuai (harus berupa jalur ke direktori sumber atau file telur).
glarrain
sumber
43
Agak heran tidak ada cara uninstall yang sesuai untuk itu.
Drake Guan
4
@Drake ya, sebenarnya cukup menjengkelkan
glarrain
4
Dengan versi pip saat ini, uninstall berfungsi dengan baik juga untuk paket yang diinstal dengan -eopsi.
Famousgarkin
9
bagi saya menggunakan 8.1.2, pip uninstall package_nameberfungsi, tetapi pip uninstall .tidak berhasil
bingun00
5
Ada masalah terbuka terhadap pip di sini untuk kemampuan menghapus paket yang diinstal yang dapat diedit.
Chris Hunt
22

Cara yang lebih mudah untuk melakukan hal yang sama dengan versi baru setup_tools adalah dengan menjalankan yang berikut ini:

python setup.py develop -u

Yang pada dasarnya melakukan hal yang sama seperti yang dijelaskan @glarrain dalam jawabannya.

Ahmed Shariff
sumber
2
apakah seharusnya ada keluaran untuk perintah itu? Saya mengerti running developtetapi saya masih .egg-infofile ... apakah seharusnya menghapusnya?
Pinokio
Apa itu "versi baru setup_tools" yang jawaban ini berfungsi? Bisakah Anda mengkonfirmasi ini?
Charlie Parker
Apakah jawaban Anda menjamin bahwa seseorang tidak harus menghapusnya secara manual?
Charlie Parker
Itu tidak menghasilkan keluaran apa pun. Menurut pemahaman saya, ia harus menghapusnya: "--uninstall, -u Un-deploy proyek saat ini. Anda dapat menggunakan opsi --install-dir atau -d untuk menentukan area pementasan. File .egg-link yang dibuat akan dihapus, jika ada dan masih mengarah ke direktori proyek. " dari dokumen setuptools . Setelah menjalankan ini, apakah ia masih memuat konten dari direktori pengembangan?
Ahmed Shariff
@CharlieParker Saya tidak yakin versi mana ini diperkenalkan. Saya tidak pernah menghapus file ini secara manual.
Ahmed Shariff
10

Instal paket dev menggunakan cmd:

pip install --editable .

Copot pemasangan:

rm -r $(find . -name '*.egg-info')

Sekarang Anda dapat menggunakan:

pip uninstall package_name 

atau python setup.py develop --uninstallataupython setup.py develop -u

Legolas Bloom
sumber
4
Dapatkah Anda menentukan dari mana Anda menjalankan perintah kedua itu?
Ethanabrooks
1
@ethanabrooks .adalah direktori saat ini, Anda menggunakan jalur absolut lengkap dari paket tersebut.
Legolas Bloom
1
Tidak lengkap. Bagaimana dengan semua paket Python? ( site-packagesdir)
Jorge Orpinel
Ini tidak sepenuhnya membatalkan pemasangan. Ini menghapus hal-hal dari folder tempat paket diinstal, tetapi tidak menghapus symlink di dist-packagesdirektori Anda (tempat Python mencari paket yang diinstal). Lebih bersih untuk digunakan python setup.py develop -u.
Mark Amery
@MarkAmery Terima kasih, pip uninstall package_namebekerja sekarang.
Legolas Bloom
6

Ini adalah bug di debian / ubuntu linux yang menggunakan pip yang diinstal OS (v8.1.1 untuk saya), yang akan Anda gunakan sudo pipmeskipun Anda telah mengupgrade pip (mis. Get-pip.py). Lihat https://github.com/pypa/pip/issues/4438

Untuk diskusi tentang cara membersihkan, lihat /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip , meskipun solusinya ada dari Variasi "hapus semuanya".

... pip paket [pergi] ke /usr/local/lib/python2.7/dist-packages, dan paket apt to/usr/lib/python2.7/dist-packages

... beberapa paket juga telah diinstal ~/.local/lib.

Untuk sistem saya, yang perlu saya hapus hanyalah /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link

matt wilkie
sumber
Bagi saya pip uninstall librarybekerja dengan baik. Jika Anda pergi ke jawaban yang disediakan OP sepertinya ada yang aneh dengan perpustakaannya yang rusak. Semoga ini menghemat waktu orang lain datang ke sini. Padahal, ada banyak opsi berbeda yang mungkin berhasil
Charlie Parker
5

Ternyata instalasi saya rusak.

Saya dapat menemukan entri di:

/usr/local/lib/python2.7/site-packages/easy-install.pth

Untuk mengatasi masalah ini, saya menghapus baris di file .pth dengan tangan!

import sys; sys.__plen = len(sys.path)
...
/absolute-path-to/horus  # <- I removed this line
...
Michael_Scharf
sumber
1
Apa artinya penginstalan Anda rusak?
Charlie Parker
-1

Cukup hapus instalan paket yang Anda instal dalam mode 'dapat diedit':

pip uninstall yourpackage
Apteryx
sumber
9
OP telah mencoba ini dan mengatakannya dalam pertanyaannya. Ini tidak selalu bekerja dengan paket yang diinstal sebagai 'dapat diedit'
dusktreader
2
@dusktreader: Saya tidak yakin apa yang terjadi dengan pip uninstallperintah OP (mungkin versi pip yang kedaluwarsa?), tetapi saya telah memverifikasi bahwa dalam keadaan normal itu melakukan persis apa yang disarankan untuk dilakukan secara manual dalam jawaban yang diterima oleh @glarrain. Jika tidak berhasil untuk Anda, harap jelaskan apa yang Anda lakukan di sini sehingga kami dapat menggali masalahnya lebih lanjut.
Apteryx
@Apteryx tunggu, apakah Anda mengatakan itu berfungsi bahkan untuk mode yang dapat diedit?
Charlie Parker
Jawaban ini berhasil untuk saya. Saya pikir itu tidak berhasil untuk OP karena jika Anda memeriksa jawabannya dia memiliki instalasi rusak yang aneh (atau komputernya dalam keadaan aneh). pip uninstall pkgbekerja afaik.
Charlie Parker