Apa yang terjadi jika saya tidak sengaja pip install
menggunakan paket yang sudah saya instal apt-get
sebelumnya? Apakah saya cukup menggunakan versi terbaru (mungkin yang saya instal gunakan pip
)? Apa yang terjadi sebaliknya?
Catatan: Saya tidak menggunakan Python di lingkungan virtual (hanya karena saya tidak tahu mengapa saya harus - Saya menggunakan Python sebagai alat analisis data dan kebanyakan mencoba menggunakan versi terbaru dari semuanya).
apt-get
danpip
pip
instal mereka di/usr/local
subdirektori secara default atau direktori lain jika Anda mau.apt-get install python-pandas
diikuti olehpip install pandas
, atau sebaliknya? Bagaimana cara instalasi python global saya tahu yang mana dari kedua versi yang digunakan?python -c "import sys; print sys.path"
Jawaban:
Seperti @Timo disebutkan dalam komentarnya,
python -c "import sys; print sys.path"
akan memberi Anda jalur pemuatan modul Python untuk pemasangan Python Anda. Pada pemasangan yang relatif baru 16,04, ada tiga direktori catatan (di antara 10 total yang ada di tambang):Namun yang paling penting untuk dicatat adalah bahwa '/usr/local/lib/python2.7/dist-packages' lebih tinggi dalam presedensi daripada '/usr/lib/python2.7/dist-packages'.
Jika Anda pertama kali menginstal paket Python melalui apt (-get), itu akan diinstal ke '/usr/lib/python2.7/dist-packages'. Jika Anda kemudian mencoba dan menggunakan pip untuk menginstal modul, pip awalnya akan memberikan peringatan bahwa ketergantungan sudah terpenuhi, kemudian keluar; menambahkan flag --upgrade akan memaksa pip untuk menginstal, memasang modul ke '/usr/local/lib/python2.7/dist-packages'. (Perhatikan output yang juga mengatakan bahwa versi di '/usr/lib/python2.7/dist-packages' tidak dihapus) Anda dapat kemudian verifikasi bahwa versi pip-instal adalah salah satu yang digunakan dengan menggunakan berikut:
python -c "import MODULE; print MODULE.__file__"
.Dengan demikian, ini menunjukkan bahwa paket yang diinstal melalui pip akan diutamakan daripada paket yang diinstal sistem, tetapi tidak akan menimpa apa pun yang diinstal dari apt (-get).
sumber
Untuk menambah @Bryan Wyatt, tampaknya diinginkan (dan dimaksudkan) bahwa item yang diinstal / ditingkatkan PIP harus diutamakan daripada paket yang diinstal (mungkin lebih tua) APT. Sistem saya memiliki jalur apt dan pip terbalik. Seharusnya (mengabaikan entri lain):
Namun karena beberapa tindakan yang tidak diketahui yang harus saya ambil, jalur ini muncul dalam urutan yang berlawanan bagi saya (mengabaikan entri lain):
Ternyata sesuatu yang saya menambahkan
/usr/lib/python2.7/dist-packages
untuk/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Cukup menghapus garis darieasy-install.pth
memperbaiki kesalahan untuk saya./usr/lib/python2.7/dist-packages
masih di jalur saya, karena akan ditambahkan pada tahap selanjutnya di tempat lain.Sebagai catatan tambahan, sidik jari akan menampilkan jalur Anda lebih baik ... yaitu:
sumber