Menghapus modul python yang dipasang dalam mode pengembangan

93

Hai Saya mencoba pengemasan python menggunakan setuptools dan untuk menguji saya menginstal modul dalam mode pengembangan. yaitu

python setup.py develop

Ini telah menambahkan direktori modul saya ke sys.path. Sekarang saya ingin menghapus modul apakah ada cara untuk melakukan ini?

Terima kasih sebelumnya

copyninja
sumber
4
Mulai gunakan pipatau manajer lain dengan kemampuan uninstall untuk mengelola paket python.
Tomasz Wysocki
1
@Tomasz Bagaimana Anda melakukan yang setara python setup.py developdengan pip?
akaihola
7
pip install -e.
Tomasz Wysocki
11
'pip' bukanlah jawaban yang tepat untuk pertanyaan ini. Menginstal proyek yang Anda kembangkan menggunakan 'pip' untuk menjalankan atau menggunakannya berarti Anda harus menginstal ulang setiap kali Anda mengubah kode sumber. Cara yang benar adalah menggunakan 'setup.py develop' sebagai status pertanyaan awal.
Jonathan Hartley
6
@JonathanHarte Itu benar-benar salah; pip memiliki argumen --editable(atau -e) yang berperilaku hampir sama dengan setuptools 'develop . Saya pikir itu mungkin --editablelebih baru dari komentar Anda, tetapi tidak - pencarian cepat repo pip di GitHub menghasilkan referensi ke editable dalam komit pada tahun 2009. Terlebih lagi, saya melihat bahwa ini sudah ditunjukkan oleh Tomasz Wysocki sebelum Anda berkomentar !
Mark Amery

Jawaban:

225

Gunakan opsi --uninstallatau -uuntuk develop, yaitu:

python setup.py develop --uninstall

Ini akan menghapusnya dari easy-install.pth dan menghapus .egg-link. Satu-satunya hal yang tidak dilakukannya adalah menghapus skrip (belum).

PJ Eby
sumber
3
Perhatikan bahwa jika versi pengembangan Anda menginstal beberapa file yang dapat dieksekusi, dan Anda mengubahnya di Anda setup.py, Anda harus menghapusnya secara manual.
norok2
1
Saya menjalankannya seperti yang dijelaskan, tidak ada kesalahan pada output, namun saya masih dapat mengimpor paket pengembangan saya secara global, sepertinya belum dihapus. EDIT: Saya tahu mengapa, saya harus menjalankannya dengan --useropsi seperti yang saya lakukan selama instalasi:python setup.py develop --uninstall --user
Marek
Saya tidak berpikir ini aman karena hal-hal dapat berubah dalam pengembangan (misalnya) mengganti nama modul. Anda perlu menghapus semuanya secara manual.
mathtick
@ norok2 apa adalah perintah manual yang harus dijalankan untuk menghapus executable tersebut. Sejauh yang saya tahu, di atas berfungsi untuk versi python / pip tertentu meskipun saya tidak yakin yang mana.
Charlie Parker
1
@CharlieParker rmatau delbergantung pada OS Anda. Yang saya maksud adalah jika Anda memiliki beberapa file yang dapat dieksekusi pada saat Anda menginstal dan kemudian mengubah nama mereka (atau menghapusnya) di Anda setup.py, maka setup.pytidak akan mengetahuinya lagi (tidak peduli versi pip/ pythonAnda dan Anda perlu menjaganya secara manual. Mereka biasanya terletak di beberapa bindirektori pada sistem POSIX (baca Linux, BSD, MacOS X), tidak dapat mengingat tentang Win.
norok2
16

Edit easy-install.pth di direktori paket situs Anda dan hapus baris yang mengarah ke versi pengembangan paket itu.

Zooko
sumber
Ya saya melakukan persis ini dan satu file lagi ada di sana dengan nama paket-telur-tautan atau sesuatu yang saya hapus dan sekarang referensi ke modul dihapus Terima kasih :)
copyninja
10
"setup.py develop --uninstall" melakukan ini untuk Anda, lihat jawaban @ pjeby
Jonathan Hartley
3
Ini berfungsi untuk saya ketika develop --uninstallgagal karena saya telah membagi proyek menjadi dua, dan yang salah tetap ada di direktori asli.
Wesley Baugh
1

Saya pernah mengalami masalah serupa dengan ini sebelumnya. Apa yang saya lakukan adalah memuat shell Python, mengimpor modul dan kemudian mencetak __file__atributnya. Dari sana saya hanya akan menghapus folder atau file yang sedang diasosiasikan.

Apa yang mungkin ingin Anda lihat adalah menggunakan virtualenv , sistem ini memungkinkan Anda untuk membuat instance python terpisah dari sistem Anda. Semua modul yang Anda instal atau gunakan dalam instance ini sudah lengkap termasuk versi modulnya.

Saya menyimpan semua proyek saya sekarang di dalam virtualenv yang ada di sana, yang memungkinkan saya untuk menginstal dan menggunakan modul apa pun yang saya inginkan tanpa khawatir mengacaukan modul dari proyek lain.

Tanerax
sumber
Nah dari waktu berikutnya saya bermain dengan paket saya akan menggunakan ini jadi saya tidak akan mengacaukan sistem saya Python. Terima kasih atas infonya
copyninja