Bisakah Anda menghapus direktori dari instalasi python Anda, atau adakah file yang tersisa yang harus Anda hapus?
Jawaban:
Ini bervariasi berdasarkan opsi yang Anda berikan installdan konten file konfigurasi distutils pada sistem / dalam paket. Saya tidak percaya bahwa file apa pun diubah di luar direktori yang ditentukan dengan cara ini.
Khususnya, distutils tidak memiliki perintah uninstall saat ini.
Perlu juga dicatat bahwa menghapus paket / telur dapat menyebabkan masalah ketergantungan - utilitas seperti easy_installupaya untuk mengatasi masalah tersebut.
Tiga hal yang terinstal dan perlu Anda hapus adalah:
Sekarang di sistem linux saya, ini langsung:
Tetapi pada sistem windows mereka lebih cenderung sepenuhnya berada dalam direktori distribusi Python. Saya tidak tahu tentang OSX kecuali lebih suka mengikuti pola linux.
Peretasan berbasis cap waktu lainnya:
touch /tmp/tspython setup.py install --prefix=<PREFIX>find <PREFIX> -cnewer /tmp/ts | xargs rm -r| xargs rm -r. Saya sarankan untuk memeriksa setiap file secara manual . Pada ext4 (dan sistem file lainnya), ini findakan mencantumkan semua folder juga. Jika awalan Anda dulu /usr, Anda akan menghapus/usr/* .
Ya, aman untuk hanya menghapus apa pun yang distutils terinstal. Itu berlaku untuk folder yang diinstal atau file .egg. Secara alami, apa pun yang bergantung pada kode itu tidak akan berfungsi lagi.
Jika Anda ingin membuatnya berfungsi kembali, cukup instal ulang.
Ngomong-ngomong, jika Anda menggunakan distutils juga pertimbangkan untuk menggunakan fitur multi-versi. Ini memungkinkan Anda untuk menginstal beberapa versi dari paket tunggal apa pun. Itu berarti Anda tidak perlu menghapus versi lama dari sebuah paket jika Anda hanya ingin menginstal versi yang lebih baru.
Jika ini untuk tujuan pengujian dan / atau pengembangan, setuptools memiliki perintah pengembangan yang diperbarui setiap kali Anda membuat perubahan (jadi Anda tidak perlu menghapus dan menginstal ulang setiap kali membuat perubahan). Dan Anda juga dapat menghapus paket menggunakan perintah ini.
Jika Anda menggunakan ini, apa pun yang Anda nyatakan sebagai skrip akan ditinggalkan sebagai file yang tersisa.
install --record + xargs rm
sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt
menghapus semua file dan meninggalkan direktori kosong.
Itu tidak ideal, itu harus cukup untuk menghindari konflik paket.
Dan kemudian Anda dapat menyelesaikan pekerjaan secara manual jika Anda ingin dengan membaca files.txt, atau lebih berani dan mengotomatiskan penghapusan direktori kosong juga.
Penolong yang aman adalah:
python-setup-uninstall() (
sudo rm -f files.txt
sudo python setup.py install --record files.txt && \
xargs rm -rf < files.txt
sudo rm -f files.txt
)
Diuji dengan Python 2.7.6, Ubuntu 14.04.
Saya baru saja menghapus paket python, dan meskipun saya tidak yakin saya melakukannya dengan sempurna, saya cukup yakin.
Saya mulai dengan mendapatkan daftar semua file yang terkait dengan python, diurutkan berdasarkan tanggal, dengan asumsi bahwa semua file dalam paket saya akan memiliki stempel waktu yang kurang lebih sama, dan tidak ada file lain yang memilikinya.
Untungnya, saya telah menginstal python di bawah /opt/Python-2.6.1; jika saya telah menggunakan Python yang disertakan dengan distro Linux saya, saya harus menjelajahi semuanya /usr, yang akan memakan waktu lama.
Kemudian saya hanya memeriksa daftar itu, dan mencatat dengan lega bahwa semua hal yang ingin saya nuklir terdiri dari satu direktori /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/, dan satu file /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info,.
Jadi saya baru saja menghapusnya.
Inilah cara saya mendapatkan daftar file yang diurutkan berdasarkan tanggal:
find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-
(Saya pikir itu pasti GNU "temukan", omong-omong; rasa yang Anda dapatkan di OS X tidak tahu tentang "-printf '% T @'")
Saya menggunakannya sepanjang waktu.
untuk Python di Windows:
python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
Di Mac OSX, hapus 2 direktori ini secara manual di bawah pathToPython / site-packages / Anda akan berfungsi:
misalnya, untuk menghapus pyasn1 , yang merupakan proyek terinstal distutils:
Untuk mengetahui di mana paket situs Anda:
python -m site
ERROR: flake8 3.7.9 has requirement pycodestyle<2.6.0,>=2.5.0, but you'll have pycodestyle 2.3.1 which is incompatible.
ERROR: nuscenes-devkit 1.0.8 has requirement motmetrics<=1.1.3, but you'll have motmetrics 1.2.0 which is incompatible.
Installing collected packages: descartes, future, torch, cachetools, torchvision, flake8-import-order, xmltodict, entrypoints, flake8, motmetrics, nuscenes-devkit
Attempting uninstall: torch
Found existing installation: torch 1.0.0
Uninstalling torch-1.0.0:
Successfully uninstalled torch-1.0.0
Attempting uninstall: torchvision
Found existing installation: torchvision 0.2.1
Uninstalling torchvision-0.2.1:
Successfully uninstalled torchvision-0.2.1
Attempting uninstall: entrypoints
Found existing installation: entrypoints 0.2.3
ERROR: Cannot uninstall 'entrypoints'. 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.
Lalu saya ketik:
conda uninstall entrypoints
pip install --upgrade pycodestyle
pip install nuscenes-devkit
Selesai!