Saya tidak sengaja menginstal paket Python ke sistem saya menggunakan pip
bukan apt-get
. Saya melakukan ini dengan dua cara:
- menggunakan versi yang lebih lama dari virtualenv, saya lupa untuk menambahkan
--no-site-packages
ketika membuat virtualenv - setelah itu ketika saya meneleponpip install
, paket-paket Python di mana diinstal ke sistem daripada virtualenv - dalam virtualenv pengaturan yang benar, saya mengetik
sudo pip install somepackage
- sudo diinstal ke sistem daripada virtualenv
Saya kebetulan melihat ini karena saya mengetik di pip freeze
luar virtualenv, dan melihat beberapa paket Python terdaftar yang seharusnya tidak ada di sana. Jadi sekarang pertanyaan saya adalah:
- bagaimana cara mengidentifikasi semua paket Python yang telah keliru diinstal pada sistem (yaitu, paket Python yang muncul dalam
pip freeze
daftar, tetapi tidak diinstal denganapt-get
)? - bagaimana cara menghapusnya?
python
package-management
pip
david.libremone
sumber
sumber
sudo rm -r /usr/local/lib/python2.7
. Sejauh ini bagus./usr/local/lib/python3.5
, dan setelah beberapa saat upgradeupdate-notifier-common
paket gagal karenasix
paket Python 3 hilang . Saya akhirnya menginstalsix
dengansudo -H pip3 install six
./usr/local/bin/
(beberapa saat yang lalu saya baru saja dihapus/usr/local/lib/python3.5
dan beralih ke conda ).Pip saat ini mengabaikan perintah untuk menghapus instalan yang mencoba untuk menghapus sesuatu yang dimiliki oleh OS. Itu tidak kesalahan, seperti halnya dengan paket yang hilang. Jadi, sekarang Anda dapat menghapus instalasi dengan proses berikut:
Edit file yang dibuang untuk menghapus
-e
baris "instal yang dapat diedit", semuanya setelah==
tanda (%s;==.*;;g
dalam vim), tukar baris baru dengan spasi (%s;\n; ;g
dalam vim). Kemudian Anda dapat menghapus semua paket yang tidak dimiliki denganSaya harus melakukan prosedur ini dua kali, karena beberapa paket juga diinstal
~/.local/lib
.sumber
sudo pip uninstall -y $(pip freeze | sed 's;==.*;;g' | tr '\n' ' ')
pip
. Di archlinuxpip
dengan gembira mencopot pemasangan paket sistem. Di sisi lain,pip
pada debian jessie mengeluh dan kesalahan:Not uninstalling virtualenv at /usr/lib/python3/dist-packages, owned by OS
AFAIK
sudo pip install
akan diinstal/usr/local/lib/pythonVERSION/dist-packages
. Anda perlu menjalankansudo pip uninstall
untuk menghapus instalasi paket sistem yang luas. Tampaknyapip freeze
mencari metadata paket dan akan mendaftar apa pun yang diinstal yaitu dari pip dan apt-get di luar virtualenvs. Ada-l
opsi di dalam lingkungan virtual untuk mendaftar paket-paket yang hanya berlaku untuk lingkungan virtual itu tetapi tampaknya juga merupakan kasus default di dalam lingkungan virtual. Saya pikir Anda bisa menghapus paket-paket terkait/usr/local/lib/pythonVERSION/dist-packages
juga tetapi metode yang tidak terlalu nyaman kurasa.sumber
Untuk menghapus paket yang diinstal melalui pip, cukup tekan Ctrl+ Alt+ Tdi keyboard Anda untuk membuka Terminal. Ketika terbuka, jalankan perintah di bawah ini.
Untuk mencari paket
Untuk menentukan paket Python mana yang diinstal oleh pip, dengan
freeze
perintah, yang akan memberi Anda daftar paket yang diinstal dan versinya. Saya akan menyarankan menghapus semua instance, dan menginstal ulang menggunakansudo apt-get
perintahsumber
pip uninstall
jika saya menggunakannyasudo pip install
?pip freeze
hanya menunjukkan paket-paket yang diinstal (AFAICS).Saya perlu membersihkan ruang disk dari paket Python dengan aman. Meskipun ini adalah pembersihan lengkap dari paket, saya perlu memindahkan versi Python juga jadi saya tidak perlu paket lama. Saya menggunakan yang berikut ini untuk mendapatkan semua nama paket saya, lewati 2 baris pertama dan ambil kolom pertama, dan hapus instalasi tanpa interaksi pengguna:
sumber
Ini ada hubungannya dengan Homebrew. Saya tidak punya masalah dengan pyodbc di Mac Air sampai saya menginstal Homebrew dan menggunakannya untuk beberapa hal. Saya menemukan utas ini di github yang berakhir dengan solusi yang bekerja untuk saya.
"Jika Anda memiliki Homebrew, cukup instal header ODBC:
dan jalankan "pip install pyodbc" lagi. "
Ini 100% menyelesaikan masalah bagi saya dan hanya butuh beberapa saat. Cobalah.
sumber