Bagaimana cara menghapus paket yang diinstal dengan easy_install Python?

704

Python easy_installmembuat penginstalan paket baru menjadi sangat nyaman. Namun, sejauh yang saya tahu, itu tidak mengimplementasikan fitur umum lainnya dari manajer dependensi - daftar dan menghapus paket yang diinstal.

Apa cara terbaik untuk mengetahui apa yang diinstal, dan apa cara yang disukai untuk menghapus paket yang diinstal? Apakah ada file yang perlu diperbarui jika saya menghapus paket secara manual (misalnya dengan rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.eggatau serupa)?

ire_and_curses
sumber
67
posting ini hampir 2 tahun pada saat saya menulis komentar ini. pip sekarang secara efektif merupakan pengganti Easy_install dan dapat dengan benar dan bersih menghapus paket (termasuk telur) yang diinstal oleh yang terakhir. Pastikan untuk membatalkan jawaban yang menyarankannya masuk ke bagian paling bawah.
Michael Ekoka
53
The oxymoron bahwa sesuatu yang disebut "easy_install" - tidak a: memiliki mitra easy_uninstall, atau b: repot untuk menyebutkan bagaimana seseorang dapat melakukannya di --help- mengejutkan pikiran saya / _ membuat hati jiwaku sedih / sedih hatiku .
Alex Grey
13
@ Mike, bagaimana jika saya mencoba mencopot pip? (:
mccc

Jawaban:

621

pip , alternatif untuk setuptools / easy_install, menyediakan perintah "uninstall".

Instal pip sesuai dengan instruksi instalasi :

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

Kemudian Anda dapat menggunakan pip uninstalluntuk menghapus paket yang diinstal denganeasy_install

lunaryorn
sumber
25
jika Anda mengalami masalah saat menghapus modul dengan pip, pastikan pemasangan pip Anda sendiri terbaru: instal pip -U pip # itu huruf U besar
Michael Ekoka
4
pip bekerja untuk saya menghapus instalasi paket easy_install yang diinstal. Saya harus menjalankan 'pip uninstall <package>' beberapa kali untuk menghapus semua versi paket. Jadi ingatlah itu. Itu bahkan menghapus paket yang terinstal 'mengembangkan', yang agak berantakan sebagai hasilnya.
DragonFax
2
Tapi Bagaimana Anda menghapus paket tidak aktif
CrazyGeek
7
Saya menggunakan easy_install untuk menginstal pip untuk menghapus instalasi easy_install.
2
Jawabannya mengatakan "instal pip", tetapi sebenarnya pip tampaknya sudah terintegrasi dengan Python modern .
Edward
188

Untuk menghapus instalan, .eggAnda perlu ke rm -rftelur (mungkin direktori) dan menghapus baris yang cocok darisite-packages/easy-install.pth

joeforker
sumber
18
pipManajer paket yang lebih baru menyertakan fitur uninstall.
joeforker
Saya menemukan pip lebih baik daripada menghapus, karena pip menginstal dari sumber. Jika Anda menyukai saya Win7 64bit baru, ini akan menghemat hari Anda :)
daitangio
6
Beberapa penggunaan macet dengan versi lama dari pip yang tidak memiliki opsi uninstall, jadi jawaban ini masih layak.
Mark Pitchless
5
Mungkin perlu disebutkan bahwa metode ini dapat meninggalkan menyimpang data_filesdan scripts(dan mungkin kategori file lainnya) pada sistem. Egg's EGG-INFO/SOURCES.txtberisi daftar semua packagefile dan sources, tetapi tidak data_files, yang dapat diinstal ke direktori sembarang pada sistem Anda ...
Alex Leach
pip tidak selalu menghapus semua instalan easy_install. Inilah sedikit pengalaman yang baru saja terjadi pada saya ketika pip tidak dapat menghapus salah satu modul saya. Saya harus menghapus baris yang cocok dari situs-paket / mudah-instal.pth untuk benar-benar menghapusnya.
ychaouche
158

Pertama, Anda harus menjalankan perintah ini:

$ easy_install -m [PACKAGE]

Ini menghapus semua dependensi paket.

Kemudian hapus file telur dari paket itu:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg
PythonDev
sumber
1
lebih banyak dokumen di sini: peak.telecommunity.com/DevCenter/…
GiDo
-mbukan perintah easy_install yang tepat untuk menghapus apa pun sejauh yang saya tahu, tetapi jawaban ini memberikan lokasi penting dari paket easy_install yang tidak dijawab oleh jawaban lain. sebuah rm -rf /usr/local/lib/python*sebelum menginstal pip adalah cara untuk pergi tampaknya bagi saya
fuzzyTew
55

Semua info yang di jawaban yang lain, tetapi tidak merangkum baik permintaan Anda atau tampaknya membuat hal-hal sia-sia kompleks:

  • Untuk keperluan penghapusan Anda gunakan:

    pip uninstall <package>

    (instal menggunakan easy_install pip)

  • Untuk 'daftar paket yang diinstal' Anda perlu menggunakan:

    pip freeze

    Atau:

    yolk -l

    yang dapat menampilkan lebih banyak detail paket.

    (Instal melalui easy_install yolkatau pip install yolk)

Rabarberski
sumber
Setelah berjalan yolk -l, saya melihat bahwa saya memiliki paket duplikat seperti "scipy -0.11.0 -non-development development" dan "scipy -0.14.0 ...-development development". Bagaimana saya bisa menghapus paket pengembangan tidak aktif ini?
bobbyjoe93
2
Ini bagus kecuali saya ingin menghapus pip yang diinstal oleh easy_install. Ini karena akhirnya menginstalnya untuk versi Python yang salah.
Nagev
28

Ada beberapa sumber di internet yang menyarankan hack dengan menginstal ulang paket dengan opsi -m dan kemudian hanya menghapus file .egg di lib / dan binari di bin /. Juga, diskusi tentang masalah setuptools ini dapat ditemukan pada pelacak bug python sebagai masalah setuptools 21 .

Sunting: Menambahkan tautan ke bugtracker python.

c089
sumber
2
Terima kasih atas info ini. Untuk referensi orang lain, inilah tautan ke masalah yang Anda sebutkan: bugs.python.org/setuptools/issue21
ire_and_curses
25

Jika masalahnya adalah gangguan yang cukup serius bagi Anda, Anda dapat mempertimbangkan virtualenv . Ini memungkinkan Anda untuk membuat lingkungan yang merangkum pustaka python. Anda menginstal paket di sana daripada di direktori paket situs global. Semua skrip yang Anda jalankan di lingkungan itu memiliki akses ke paket-paket itu (dan juga paket global Anda). Saya sering menggunakan ini ketika mengevaluasi paket yang saya tidak yakin ingin / perlu instal secara global. Jika Anda memutuskan untuk tidak membutuhkan paket itu, cukup mudah untuk meledakkan lingkungan virtual itu. Cukup mudah digunakan. Buat env baru:

$>virtualenv /path/to/your/new/ENV

virtual_envt menginstal setuptools untuk Anda di lingkungan baru, sehingga Anda dapat melakukan:

$>ENV/bin/easy_install

Anda bahkan dapat membuat skrip boostrap Anda sendiri yang mengatur lingkungan baru Anda. Jadi, dengan satu perintah, Anda dapat membuat env virtual baru dengan, katakanlah, python 2.6, psycopg2 dan django diinstal secara default (Anda dapat menginstal versi python env-spesifik jika Anda mau).

labirin
sumber
Apa itu $>? Apakah itu cepat? Mungkin mengoreksi ke $ akan lebih membantu? Terima kasih
Gray
19

Instruksi resmi (?): Http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Jika Anda telah mengganti paket dengan versi lain, maka Anda bisa menghapus paket yang tidak Anda perlukan dengan menghapus file atau direktori PackageName-versioninfo.egg (ditemukan di direktori instalasi).

Jika Anda ingin menghapus versi paket yang saat ini diinstal (atau semua versi paket), Anda harus terlebih dahulu menjalankan:

easy_install -mxN PackageName

Ini akan memastikan bahwa Python tidak terus mencari paket yang Anda rencanakan untuk dihapus. Setelah melakukan ini, Anda dapat menghapus file atau direktori .egg dengan aman, bersama dengan skrip yang ingin Anda hapus.

Mark Rajcok
sumber
Beberapa hal sepertinya tidak pernah berubah! PIP menolak untuk menginstal plugin hack TRAC (trac admin), hanya easy_install yang berfungsi. Tapi saya tidak sengaja menginstal versi lama. Dan easy_install tidak dapat memperbaikinya dari url https untuk proyek tersebut. Jadi saya menggunakan PIP untuk menghapusnya, tetapi setelah menginstal ulang TRAC tidak melihat plugin. Jadi saya menggunakan info di sini untuk mengisolasi pkg dan menghapusnya secara manual, lalu menginstal ulang. Wah. (python 2.7)
Richard Cooke
15

mencoba

$ easy_install -m [PACKAGE]

kemudian

$ rm -rf .../python2.X/site-packages/[PACKAGE].egg
Jim Geovedi
sumber
1
Untuk menghapus paket: $ easy_install -mxN PACKAGE lalu $ rm -rf .../lib/python2.X/site-packages/PACKAGE.egg (Lihat peak.telecommunity.com/DevCenter/… )
Vinicius José Latorre
7

Untuk daftar paket Python yang diinstal, Anda dapat menggunakan yolk -l. Anda harus menggunakannya easy_install yolkterlebih dahulu.

Enis Afgan
sumber
6

Datangi pertanyaan ini, sambil mencoba menghapus banyak paket Python acak yang terinstal dari waktu ke waktu.

Menggunakan informasi dari utas ini, inilah yang saya buat:

cat package_list | xargs -n1 sudo pip uninstall -y

Ini package_listdibersihkan (awk) dari pip freezedalam virtualenv.

Untuk menghapus hampir semua paket Python:

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y
m0hit
sumber
<package_list xargs -n1 sudo pip uninstall -ymenghindari UUOC!
Heini Høgnason
3

Saya mengalami masalah yang sama pada MacOS X Leopard 10.6.blah.

Solusi adalah memastikan Anda memanggil MacPorts Python:

sudo port install python26
sudo port install python_select
sudo python_select python26
sudo port install py26-mysql

Semoga ini membantu.

Cmag
sumber
1
Namun, saya sudah sepenuhnya beralih dari MacPorts ke Brew, asli python 2.7 dari mac. MySQLdb diinstal melalui setup_tools
Cmag
3

Bagi saya hanya menghapus file ini: easy-install.pth berfungsi, istirahat pip install django == 1.3.7

Snehal Parmar
sumber
1

Ini berhasil untuk saya. Ini mirip dengan jawaban sebelumnya tetapi jalur ke paket berbeda.

  1. sudo easy_install -m
  2. sudo rm -rf /Library/Python/2.7/site-packages/.egg

Plaform: MacOS High Sierra versi 10.13.3

Ayam Merah
sumber
1
perintah pertama menghasilkan kesalahan ini untuk saya:error: No urls, filenames, or requirements specified (see --help)
Michael