uninstall pip bukan lagi jawaban yang valid. Ini buktinya. [sri @ localhost python] $ pip uninstall foo DEPRECATION: Menghapus instalan proyek yang diinstal distutils (foo) telah usang dan akan dihapus dalam versi masa depan. Ini karena fakta bahwa mencopot proyek distutils hanya akan mencopot sebagian proyek.
shrewmouse
@shrewmouse yang tidak muncul lagi.
JC Rocamonde
@JCRocamonde Dengan paket yang saya buat, versi terbaru dari pip menunjukkan It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.ini masih menjadi masalah.
Josh
@Josh di bagian atas file setup.py Anda lakukan "dari setuptools import setup" daripada "from distutils.core import setup".
Kemudian hapus juga direktori yang berisi, mis . /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/Pada macOS. Tidak ada file, tetapi Python masih akan mengimpor modul kosong:
>>>import my_module
>>> my_module.__file__
None
Setelah dihapus, Python menunjukkan:
>>>import my_module
Traceback(most recent call last):File"<stdin>", line 1,in<module>ModuleNotFoundError:No module named 'my_module'
Bagaimana saya bisa menginstal ulang paket saya memiliki kode sumber menggunakan setup.py darinya?
ア レ ッ ク ス
5
Ini juga meninggalkan direktori kosong di tempatnya.
Dilawar
3
Hai, saya mencoba saran Anda, untuk beberapa file ketika saya mencoba cat files.txt | xargs rm -rf dikatakan izin ditolak, bahkan dalam mode sudo, misalnya untuk / usr / local / bin / pydoc atau / usr / local / bin / idle Ada ide mengapa?
212
Bagi saya, sebagian besar berfungsi:
sudah menginstal pip, mis .:
$ easy_install pip
Periksa, bagaimana paket yang Anda instal dinamai dari sudut pandang pip:
$ pip freeze
Ini akan mencantumkan nama semua paket, yang telah Anda instal (dan yang terdeteksi oleh pip). Namanya bisa lama, lalu gunakan hanya nama paket yang ditampilkan di dan setelah #egg=. Anda juga dapat dalam sebagian besar kasus mengabaikan bagian versi (apa pun yang mengikuti ==atau -).
Kemudian hapus instalasi paket:
$ pip uninstall package.name.you.have.found
Jika meminta konfirmasi tentang menghapus paket, maka Anda beruntung dan itu akan dihapus.
pip harus mendeteksi semua paket, yang dipasang oleh pip. Ini juga akan mendeteksi sebagian besar paket yang diinstal melalui easy_install atau setup.py, tetapi ini mungkin dalam beberapa kasus jarang gagal.
Berikut ini adalah contoh nyata dari tes lokal saya dengan paket bernama ttr.rdstmcpada MS Windows
Semua yang tertulis di atas masih berlaku, lagi pula, ada modifikasi kecil yang tersedia sekarang.
Instal pip dalam python 2.7.9 dan python 3.4
Versi python terbaru datang dengan paket yang ensurepipmemungkinkan untuk menginstal pip bahkan ketika sedang offline:
$ python -m ensurepip --upgrade
Pada beberapa sistem (seperti Debian Jessie) ini tidak tersedia (untuk mencegah pemecahan instalasi sistem python).
Menggunakan grepataufind
Contoh di atas menganggap, Anda telah grepmenginstal. Saya telah (pada saat itu saya punya MS Windows di mesin saya) menginstal seperangkat utilitas linux (termasuk grep). Atau, gunakan MS Windows asli findatau abaikan saja penyaringan itu dan temukan namanya dalam daftar paket python yang terdeteksi lebih lama.
alat / versi pengemasan mana yang Anda gunakan agar ini berfungsi? ( distutils,, distributedll ...)
Ciro Santilli 郝海东 冠状 病 六四 事件 事件
1
Saya menggunakan setuptools. Anda dapat memeriksa bitbucket.org/vlcinsky/ttr.aws.utils.s3 (yang tidak sempurna). Bagaimanapun, saya cukup tidak senang dengan penggunaan paket namespace, kadang-kadang impor rusak tanpa alasan yang terlihat. Tapi ini cerita lain.
Jan Vlcinsky
1
mengoreksi diri sendiri. Meskipun saya impor setuptools, sebenarnya saya gunakan distribute. Pelajaran lain: ketika menginstal paket saya sendiri dari pypi dan berencana untuk mengembangkan yang lain secara lokal dengan berbagi namespace yang sama, jangan gunakan$ pip install <the package> , gunakan $ easy_install <the package>, jika tidak Anda akan mengalami konflik saat mengimpor paket pengembangan Anda.
Jan Vlcinsky
1
Untuk membantu orang lain: karena saya bukan root, saya menginstal semuanya di rumah saya. Inilah yang saya lakukan easy_install --user --prefix=$HOME pip. Lalu aku menambahkan berikut di PATH saya: ln -s /home/tflutre/.local/bin/pip ~/bin, ln -s /home/tflutre/.local/bin/pip2.7 ~/bindan ln -s /home/tflutre/.local/bin/pip2 ~/bin.
tflutre
3
Jawaban ini harus diterima, karena jauh lebih mudah dan pip biasanya disertai dengan Python. Mudah digunakan pada command prompt / terminal - pip uninstall moduleatau python -m pip uninstall moduleseharusnya berfungsi. Juga harus cross-platform, seperti bagian dari Python.
Edward
81
Jawaban # 1 memiliki masalah:
Tidak akan bekerja pada mac.
Jika file diinstal yang mencakup spasi atau karakter khusus lainnya, xargsperintah akan gagal, dan menghapus file / direktori yang cocok dengan kata-kata individual.
yang -rdi rm -rftidak perlu dan paling buruk bisa menghapus hal-hal yang tidak ingin.
Sebaliknya, untuk unix-like:
sudo python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr '\n''\0'< files.txt | xargs -0 sudo rm -f --
Ada juga masalah yang belum terpecahkan dengan menghapus instalan setup.pyyang tidak akan mengganggu Anda dalam kasus tertentu. Untuk jawaban yang lebih lengkap, lihat halaman wiki ini:
Mengapa Anda tidak meninggalkan saran di bawah yang terpilih? Perhatikan bahwa, "masalah serius" ini adalah tentang kasus sudut.
lpapp
17
Saya meninggalkan komentar di bawah yang terpilih. Komentar saya dimakamkan di bawah tautan "muat lebih banyak komentar" yang sangat sedikit orang klik. Saya juga membuat jawaban saya sendiri karena saya punya banyak hal untuk dikatakan, yaitu. tautan dalam jawaban saya. Juga, kasus sudut tidak akan menjadi istilah pertama yang muncul di benak saya ketika file memiliki ruang di dalamnya.
Ian Kelling
Untuk apa nilainya, saya pikir ini akan gagal pada nama file yang mengandung baris baru :) Apakah pengelola paket jahat, saya harap saya tidak pernah mengetahuinya.
Jack O'Connor
2
Pada OS X Mavericks, setidaknya, xargs tidak memiliki opsi -d. Mengapa? Karena Apple mencintaimu. Pokoknya ini memiliki efek yang sama seperti di atas, dan aman dengan ruang dan semacamnya. Namun spesifik Bash. Setelah menjalankan instal dengan --record to files.txt:OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
Joseph Sikorski
2
@IanKelling Variabel penyisipan di dalam printfstring format akan gagal jika string mengandung misalnya eg %atau \karakter. Selalu berikan string format: printf '%s\0' "$line"(juga hindari gema). Meskipun Anda selanjutnya dapat menghindari loop dengan hanya menggunakantr '\n' '\0' < files.txt | xargs -0 rm -f
geirha
39
Pertama, rekam file yang telah Anda instal. Anda dapat mengulangi perintah ini, bahkan jika sebelumnya Anda telah menjalankan setup.py install:
python setup.py install --record files.txt
Saat Anda ingin menghapus instalan, Anda dapat:
sudo rm $(cat files.txt)
Ini berfungsi karena perintah rm mengambil daftar file yang dipisahkan spasi-putih untuk dihapus dan catatan instalasi Anda hanyalah daftar seperti itu.
Apakah ada cara untuk memeriksa tidak hanya apakah program saya yang menginstalnya tetapi juga jika sejak saat itu, tidak ada aplikasi lain yang menggunakan sumber daya ini? Sebagai contoh, saya menginstal alat, untuk melakukannya, saya harus menginstal beberapa perpustakaan, mungkin beberapa dari mereka sudah diinstal (yang berarti saya tidak dapat menghapus dalam proses uninstall) tetapi juga saya tidak dapat menghapus apa pun yang aplikasi lain tidak diinstal karena perpustakaan saya telah menginstal pertama ..
Gabrielle
19
Sekarang python memberi Anda pilihan untuk menginstal pipselama instalasi (saya di Windows, dan setidaknya python melakukannya untuk Windows!). Mengingat Anda telah memilih untuk menginstal pipselama instalasi python (Anda sebenarnya tidak harus memilih karena itu default), pipsudah diinstal untuk Anda. Kemudian, ketikkan pipcommand prompt, Anda akan melihat bantuan muncul. Anda dapat menemukan instruksi penggunaan yang diperlukan di sana. Misalnya pip listmenunjukkan kepada Anda daftar paket yang diinstal. Kamu bisa menggunakan
pip uninstall package_name
untuk menghapus paket yang tidak Anda inginkan lagi. Baca lebih lanjut di sini (dokumentasi pip) .
Cara malas: cukup hapus instalasi dari menu instalasi Windows (jika Anda menggunakan Windows), atau dari perintah rpm, asalkan Anda menginstalnya kembali setelah membuat paket distribusi.
Saya tidak tahu apakah saya menyukainya, tetapi Anda mendapatkan poin untuk pemikiran ortogal. :)
Lennart Regebro
Sejujurnya, saya tidak yakin karena itu "cara malas" ;-) Tapi saya pikir saya akan menyebutkan itu mungkin untuk membuat lebih banyak "standar" installer. Anehnya, setup.py tidak menyediakan cara bersih untuk menghapus paket.
RedGlyph
1
Pencopotan pemasangan memerlukan registrasi terpusat dari paket yang diinstal dan file-file itu, dan tidak ada satu pun. Diskusi sedang berlangsung tentang cara meningkatkan cerita ini dan mungkin diselesaikan dengan Python 2.7 / 3.2 atau 2.8 / 3.3 atau lebih.
Lennart Regebro
1
@Lennart: tidak akan ada Python 2.8 setidaknya itulah pernyataan resmi saat ini
Piotr Owsiak
2
@PiotrOwsiak: Ya, tapi itu bukan pernyataan saat itu. 2,8 masih kemungkinan pada waktu itu dan tetap demikian sampai PEP 404 disetujui, akhir tahun lalu, saya pikir.
Lennart Regebro
6
Buka direktori paket python Anda dan hapus file .egg Anda, misalnya: Dalam python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/
Dalam python 2.6 (ubuntu): /usr/local/lib/python2.6/dist-packages/
Bekerja, kecuali jika menginstal file yang diinstal di luar paket, yang beberapa lakukan, seperti setuptools yang menginstal dan perintah easy_install.
Lennart Regebro
3
Biasanya, jika paket diinstal menggunakan python setup.py seperti yang ditentukan oleh OP, tidak akan ada telur. OTOH, jika ada satu karena easy_install digunakan, cara terdokumentasi untuk menghapus paket adalah dengan menggunakan easy_install -m sebelum menghapus file telur; jika tidak, cangkang telur mungkin tertinggal dalam file instal-instal yang mudah.
Ned Deily
5
Tidak persis menjawab pertanyaan, tetapi sesuatu yang membantu saya setiap hari:
Instal paket Anda dengan
pip install .
Ini memasukkan paket $HOME/.local. Copot pemasangan dengan
Jauh lebih mudah untuk menulis ini sebagai sudo xargs rm -v < install.record.
poolie
1
Jika Anda masih memiliki file yang seharusnya dihapus setelah menginstal ulang paket, pastikan folder buildtersebut juga dihapus. Karenanya, anggap itu pkgadalah paket yang ingin Anda hapus:
Saya telah menjalankan "python setup.py install" di beberapa titik di masa lalu secara tidak sengaja di lingkungan global saya, dan mengalami banyak kesulitan untuk menghapus instalan. Solusi ini tidak membantu. "pip uninstall" tidak berfungsi dengan "Tidak dapat menghapus 'splunk-appinspect'. Tidak ada file yang ditemukan untuk dihapus." "sudo pip uninstall" tidak berfungsi "Tidak dapat menghapus persyaratan splunk-appinspect, tidak diinstal". Saya mencoba mencopot pemasangan pip, menghapus cache pip, mencari paket perangkat keras saya, dll ...
"pip show" akhirnya membawaku ke solusi, "Location:" menunjuk ke sebuah direktori, dan mengganti nama direktori itu menyebabkan paket tersebut dihapus dari daftar pip. Saya mengganti nama direktori kembali, dan itu tidak muncul kembali dalam daftar pip, dan sekarang saya dapat menginstal ulang paket saya dalam virtualenv.
Saya telah menjalankan python setup.py installsekali di PyCharm saya, itu menginstal semua paket ke lingkungan basis conda saya. Nanti ketika saya ingin menghapus semua paket ini, pip uninstalltidak berfungsi. Saya harus menghapusnya dari /anaconda3/lib/python3.7/site-packages secara manual :(
Jadi saya tidak melihat alasan mengapa mereka menggunakan file setup.py alih-alih menulis file requirement.txt. File persyaratan dapat digunakan untuk menginstal paket dalam lingkungan virtual dan tidak akan mengacaukan paket sistem python.
pip uninstall <your_package>
. Lihat stackoverflow.com/questions/1231688/… .It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
ini masih menjadi masalah.Jawaban:
Catatan: Hindari
python setup.py install
penggunaanpip install .
Anda perlu menghapus semua file secara manual, dan juga membatalkan hal-hal lain yang dilakukan instalasi secara manual.
Jika Anda tidak tahu daftar semua file, Anda dapat menginstalnya kembali dengan
--record
opsi, dan lihat daftar yang dihasilkan ini.Untuk merekam daftar file yang diinstal, Anda dapat menggunakan:
Setelah Anda ingin menghapus instalan Anda dapat menggunakan xargs untuk melakukan penghapusan:
Atau jika Anda menjalankan Windows, gunakan Powershell:
Kemudian hapus juga direktori yang berisi, mis .
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/
PadamacOS
. Tidak ada file, tetapi Python masih akan mengimpor modul kosong:Setelah dihapus, Python menunjukkan:
sumber
cat files.txt | xargs sudo rm -rf
Bagi saya, sebagian besar berfungsi:
sudah menginstal pip, mis .:
Periksa, bagaimana paket yang Anda instal dinamai dari sudut pandang pip:
Ini akan mencantumkan nama semua paket, yang telah Anda instal (dan yang terdeteksi oleh pip). Namanya bisa lama, lalu gunakan hanya nama paket yang ditampilkan di dan setelah
#egg=
. Anda juga dapat dalam sebagian besar kasus mengabaikan bagian versi (apa pun yang mengikuti==
atau-
).Kemudian hapus instalasi paket:
Jika meminta konfirmasi tentang menghapus paket, maka Anda beruntung dan itu akan dihapus.
pip harus mendeteksi semua paket, yang dipasang oleh pip. Ini juga akan mendeteksi sebagian besar paket yang diinstal melalui easy_install atau setup.py, tetapi ini mungkin dalam beberapa kasus jarang gagal.
Berikut ini adalah contoh nyata dari tes lokal saya dengan paket bernama
ttr.rdstmc
pada MS WindowsEdit 2015-05-20
Semua yang tertulis di atas masih berlaku, lagi pula, ada modifikasi kecil yang tersedia sekarang.
Instal pip dalam python 2.7.9 dan python 3.4
Versi python terbaru datang dengan paket yang
ensurepip
memungkinkan untuk menginstal pip bahkan ketika sedang offline:$ python -m ensurepip --upgrade
Pada beberapa sistem (seperti Debian Jessie) ini tidak tersedia (untuk mencegah pemecahan instalasi sistem python).
Menggunakan
grep
ataufind
Contoh di atas menganggap, Anda telah
grep
menginstal. Saya telah (pada saat itu saya punya MS Windows di mesin saya) menginstal seperangkat utilitas linux (termasuk grep). Atau, gunakan MS Windows aslifind
atau abaikan saja penyaringan itu dan temukan namanya dalam daftar paket python yang terdeteksi lebih lama.sumber
distutils
,,distribute
dll ...)setuptools
. Anda dapat memeriksa bitbucket.org/vlcinsky/ttr.aws.utils.s3 (yang tidak sempurna). Bagaimanapun, saya cukup tidak senang dengan penggunaan paket namespace, kadang-kadang impor rusak tanpa alasan yang terlihat. Tapi ini cerita lain.setuptools
, sebenarnya saya gunakandistribute
. Pelajaran lain: ketika menginstal paket saya sendiri dari pypi dan berencana untuk mengembangkan yang lain secara lokal dengan berbagi namespace yang sama, jangan gunakan$ pip install <the package>
, gunakan$ easy_install <the package>
, jika tidak Anda akan mengalami konflik saat mengimpor paket pengembangan Anda.easy_install --user --prefix=$HOME pip
. Lalu aku menambahkan berikut di PATH saya:ln -s /home/tflutre/.local/bin/pip ~/bin
,ln -s /home/tflutre/.local/bin/pip2.7 ~/bin
danln -s /home/tflutre/.local/bin/pip2 ~/bin
.pip uninstall module
ataupython -m pip uninstall module
seharusnya berfungsi. Juga harus cross-platform, seperti bagian dari Python.Jawaban # 1 memiliki masalah:
xargs
perintah akan gagal, dan menghapus file / direktori yang cocok dengan kata-kata individual.-r
dirm -rf
tidak perlu dan paling buruk bisa menghapus hal-hal yang tidak ingin.Sebaliknya, untuk unix-like:
Dan untuk windows:
Ada juga masalah yang belum terpecahkan dengan menghapus instalan
setup.py
yang tidak akan mengganggu Anda dalam kasus tertentu. Untuk jawaban yang lebih lengkap, lihat halaman wiki ini:https://ofswiki.org/wiki/Uninstalling_setup.py_install
sumber
OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
printf
string format akan gagal jika string mengandung misalnya eg%
atau\
karakter. Selalu berikan string format:printf '%s\0' "$line"
(juga hindari gema). Meskipun Anda selanjutnya dapat menghindari loop dengan hanya menggunakantr '\n' '\0' < files.txt | xargs -0 rm -f
Pertama, rekam file yang telah Anda instal. Anda dapat mengulangi perintah ini, bahkan jika sebelumnya Anda telah menjalankan
setup.py install
:Saat Anda ingin menghapus instalan, Anda dapat:
Ini berfungsi karena perintah rm mengambil daftar file yang dipisahkan spasi-putih untuk dihapus dan catatan instalasi Anda hanyalah daftar seperti itu.
sumber
Sekarang python memberi Anda pilihan untuk menginstal
pip
selama instalasi (saya di Windows, dan setidaknya python melakukannya untuk Windows!). Mengingat Anda telah memilih untuk menginstalpip
selama instalasi python (Anda sebenarnya tidak harus memilih karena itu default),pip
sudah diinstal untuk Anda. Kemudian, ketikkanpip
command prompt, Anda akan melihat bantuan muncul. Anda dapat menemukan instruksi penggunaan yang diperlukan di sana. Misalnyapip list
menunjukkan kepada Anda daftar paket yang diinstal. Kamu bisa menggunakanuntuk menghapus paket yang tidak Anda inginkan lagi. Baca lebih lanjut di sini (dokumentasi pip) .
sumber
Cara malas: cukup hapus instalasi dari menu instalasi Windows (jika Anda menggunakan Windows), atau dari perintah rpm, asalkan Anda menginstalnya kembali setelah membuat paket distribusi.
Sebagai contoh,
("foo" menjadi contoh saja).
sumber
Buka direktori paket python Anda dan hapus file .egg Anda, misalnya: Dalam python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/
Dalam python 2.6 (ubuntu): /usr/local/lib/python2.6/dist-packages/
sumber
Tidak persis menjawab pertanyaan, tetapi sesuatu yang membantu saya setiap hari:
Instal paket Anda dengan
Ini memasukkan paket
$HOME/.local
. Copot pemasangan dengansumber
pip unistall .
tidak bekerja untuk saya, tetapipip uninstall <package_name>
berhasil, terima kasih!Mungkin Anda bisa melakukan ini sebagai alternatif: -
1) Dapatkan versi python -
-> Perintah di atas memberi Anda Versi python saat ini yaitu 2.4.3
2) Dapatkan direktori instalasi python -
-> Dari perintah di atas Anda bisa mendapatkan direktori instalasi yang - /usr/lib/python2.4/site-packages
3) Dari sini Anda dapat menghapus paket dan file telur python
Ini bekerja untuk saya .. Dan saya dapat menghapus paket yang mengganggu saya :)
sumber
Saya pikir Anda dapat membuka setup.py, cari nama paket, dan kemudian minta pip untuk menghapusnya.
Dengan asumsi nama tersedia dalam variabel 'METADATA':
sumber
Memperluas apa yang dikatakan Martin, merekam output instal dan skrip bash kecil cukup berhasil. Inilah yang saya lakukan ...
Dan presto. Tidak terinstal.
sumber
sudo xargs rm -v < install.record
.Jika Anda masih memiliki file yang seharusnya dihapus setelah menginstal ulang paket, pastikan folder
build
tersebut juga dihapus. Karenanya, anggap itupkg
adalah paket yang ingin Anda hapus:Usahakan berolahraga untuk python3 dan hapus paket dan file * .egg-info-nya
sumber
Di
{virtualenv}/lib/python2.7/site-packages/
(jika tidak menggunakan virtualenv maka{system_dir}/lib/python2.7/dist-packages/
)distribute-0.6.34-py2.7.egg
)easy-install.pth
, hapus baris yang sesuai (itu harus path ke direktori sumber atau file telur).sumber
Saya telah menjalankan "python setup.py install" di beberapa titik di masa lalu secara tidak sengaja di lingkungan global saya, dan mengalami banyak kesulitan untuk menghapus instalan. Solusi ini tidak membantu. "pip uninstall" tidak berfungsi dengan "Tidak dapat menghapus 'splunk-appinspect'. Tidak ada file yang ditemukan untuk dihapus." "sudo pip uninstall" tidak berfungsi "Tidak dapat menghapus persyaratan splunk-appinspect, tidak diinstal". Saya mencoba mencopot pemasangan pip, menghapus cache pip, mencari paket perangkat keras saya, dll ...
"pip show" akhirnya membawaku ke solusi, "Location:" menunjuk ke sebuah direktori, dan mengganti nama direktori itu menyebabkan paket tersebut dihapus dari daftar pip. Saya mengganti nama direktori kembali, dan itu tidak muncul kembali dalam daftar pip, dan sekarang saya dapat menginstal ulang paket saya dalam virtualenv.
sumber
Saya telah menjalankan
python setup.py install
sekali di PyCharm saya, itu menginstal semua paket ke lingkungan basis conda saya. Nanti ketika saya ingin menghapus semua paket ini,pip uninstall
tidak berfungsi. Saya harus menghapusnya dari /anaconda3/lib/python3.7/site-packages secara manual :(Jadi saya tidak melihat alasan mengapa mereka menggunakan file setup.py alih-alih menulis file requirement.txt. File persyaratan dapat digunakan untuk menginstal paket dalam lingkungan virtual dan tidak akan mengacaukan paket sistem python.
sumber
Mungkin lebih baik untuk menghapus file terkait dengan menggunakan bash untuk membaca perintah, seperti berikut ini:
sumber