Saya agak bingung tentang kasus-kasus di mana perintah di atas harus digunakan ketika mengunduh paket python. Saya mencoba mengunduh paket bernama pyudev sesuai dengan jawaban dengan pertanyaan ini . Saya menjalankan perintah ini:
sudo pip install python-pyudev
tetapi menerima pesan berikut:
Downloading/unpacking python-pyudev
Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log
Namun berikut ini bekerja dengan baik:
sudo apt-get install python-pyudev
Kapan apt-get
seharusnya digunakan untuk menginstal paket dan kapan python-pip
digunakan?
apt
software-installation
python
pip
Vineet Kaushik
sumber
sumber
pip
digunakan untuk menginstal paket python saja, tetapiapt-get
digunakan untuk menginstal semua paket apa pun.Jawaban:
PyPI adalah indeks Paket Python - repositori modul python.
pip
digunakan untuk mengunduh dan menginstal paket langsung dari PyPI. PyPI diselenggarakan oleh Yayasan Perangkat Lunak Python . Ini adalah manajer paket khusus yang hanya menangani paket python.apt-get
digunakan untuk mengunduh dan menginstal paket dari repositori Ubuntu yang di-host oleh Canonical.Beberapa perbedaan antara menginstal paket python dari
apt-get
danpip
adalah sebagai berikut:Canonical hanya menyediakan paket untuk modul python yang dipilih. Padahal, PyPI memiliki banyak modul python yang lebih luas. Jadi, ada banyak modul python yang tidak dapat Anda instal menggunakan
apt-get
.Canonical hanya menyelenggarakan versi tunggal dari paket apa saja (umumnya yang terbaru atau yang dirilis di masa lalu). Jadi, dengan
apt-get
kita tidak dapat memutuskan versi paket python yang kita inginkan.pip
membantu kami dalam situasi ini. Kami dapat menginstal versi paket apa pun yang sebelumnya telah diunggah di PyPI. Ini sangat membantu jika terjadi konflik dalam ketergantungan.apt-get
menginstal modul python di lokasi seluruh sistem. Kami tidak bisa hanya menginstal modul di virtualenv proyek kami .pip
memecahkan masalah ini untuk kita. Jika kita menggunakanpip
setelah mengaktifkan virtualenv, cukup cerdas untuk hanya menginstal modul di virtualenv proyek kita. Seperti disebutkan dalam poin sebelumnya, jika ada versi paket python tertentu yang sudah diinstal di lokasi seluruh sistem, dan salah satu proyek kami membutuhkan versi yang lebih lama dari paket python yang sama, dalam situasi seperti itu kita dapat menggunakan virtualenv dan pip untuk menginstal versi paket python yang lebih lama tanpa konflik.Seperti @Radu Rădeanu tunjukkan dalam jawaban ini , umumnya akan ada perbedaan dalam nama paket juga. Canonical biasanya menamai paket Python 2 sebagai
python-<package_name>
dan paket Python 3 sebagaipython3-<package_name>
. Sedangkan untukpip
kita umumnya hanya perlu menggunakan paket<package_name>
Python 2 dan Python3.Mana yang harus Anda gunakan:
Keduanya
apt-get
danpip
merupakan manajer paket yang matang yang secara otomatis menginstal dependensi paket lain saat menginstal. Anda dapat menggunakan siapa saja sesuka Anda. Namun, jika Anda perlu menginstal versi paket python tertentu, atau menginstal paket dalam virtualenv, atau menginstal paket yang hanya di-host di PyPI; hanyapip
akan membantu Anda mengatasi masalah itu. Kalau tidak, jika Anda tidak keberatan menginstal paket di lokasi seluruh sistem, tidak masalah apakah Anda menggunakanapt-get
ataupip
.sumber
pip
dan secara bersamaanapt-get
.apt-get
. Karena menggunakan keduanyaapt-get
danpip
dapat menyebabkan konflik, haruskah saran selalu digunakanpip
untuk paket yang didukung olehpip
?sudo pip
tanpavirtualenv
karena sebagian besar proyek Anda membutuhkan lingkungan yang sama (tetapi lebih luas daripada apa yang disediakan dengan instalasi Ubuntu bersih). Kemudian ketika Anda melakukan upgrade sistem dan Ubuntu memutuskan untuk meng-upgrade Python ke versi baru (seperti denganzesty
keartful
- Python 3,5-3,6), semua paket pip-instal Anda di/usr
tertinggal danpip.get_installed_distributions()
menghasilkan daftar kosong.Seperti @AvinashRaj katakan dalam komentarnya ,
pip
digunakan untuk menginstal paket python saja, tetapiapt-get
digunakan untuk menginstal paket yang dibuat dalam bahasa pemrograman apa pun.Masalah utama Anda adalah menemukan nama paket yang tepat dalam kedua kasus:
akan memberi Anda nama yang tepat untuk paket yang ingin Anda instal menggunakan
pip install
, asakan memberi Anda nama yang tepat untuk paket yang ingin Anda instal menggunakan
apt-get install
:Jadi, dalam kesimpulan, koresponden
sudo apt-get install python-pyudev
adalahsudo pip install pyudev
, tidaksudo pip install python-pyudev
.Sekarang tergantung pada Anda apa yang ingin Anda pilih saat Anda ingin menginstal paket python:
pip
atauapt-get
. Lihat misalnya , T&J ini tentang perbedaan dalam menginstal paket menggunakanpip
danapt-get
.sumber
Cara pilihan saya adalah selalu menggunakan
apt
dan hanya dalam kasus modul belum tersedia di repositori Debian / Ubuntu untuk digunakanpip
, tetapi hanya dalam konteks pengguna ---user
bendera. Dengan menggunakanpip
salah satunya harus mendapatkan semua dependensi build terinstal dari katakanlah repositori Ubuntu atau menyediakannya sendiri yang bisa menjadi tugas yang membosankan.apt-get
instal paket biner saatpip
membangunnya setelah mengunduh. Seseorang seharusnya tidak menggunakan pip untuk menginstal modul ke lokasi sistem. Ini jelas salah. Selalu gunakan--user
bendera untuk memasang modul ke lokasi rumah. PYTHONPATH yang dikonfigurasikan dengan benar, biarkan python untuk mengambil modul dari HOME terlebih dahulu dan kemudian modul sistem diinstalapt-get
.sumber