Halo lagi. Untuk mengantisipasi dimulainya utas baru pada kursus Pembelajaran Mesin , kami ingin berbagi terjemahan artikel, yang memiliki hubungan tidak langsung yang cukup dengan ML, tetapi tentunya akan bermanfaat bagi pelanggan blog kami.

Mariatta , seorang pengembang Kanada, bertanya pada
python -m pip di Twitter, memintanya untuk berbicara tentang idiom ini dan menjelaskan cara kerjanya.
Baru-baru ini saya mengetahui bahwa Anda perlu menulis python -m pip daripada instalasi pip yang biasa, tetapi sekarang saya tidak dapat mengingat siapa yang saya dengar. Mungkin dari @brettsky atau @zooba . Apakah ada di antara Anda yang memiliki posting blog sehingga saya dapat membaginya dengan pembaca?
- Mariatta ( @mariatta
) 29 Oktober 2019 ( https://twitter.com/mariatta/status/1189243515739561985?ref_src=twsrc%5Etfw )
Saya tidak yakin apa yang saya katakan kepada Mariatta tentang
python -m pip , tetapi ada kemungkinan bahwa itu adalah saya, karena saya meminta instruksi untuk menginstal paket menggunakan
PyPI ditulis dengan cara ini sejak 2016. Jadi, artikel ini harus menjelaskan apa itu
python -m pip dan mengapa Anda harus menggunakannya saat memulai
pip .
Apa itu python -m pip?
Sebagai permulaan,
python -m pip mengeksekusi pip menggunakan versi Python yang Anda tentukan untuk pernyataan python. Dengan demikian,
/usr/bin/python3.7 -m pip
berarti Anda menjalankan
pip untuk juru bahasa yang terletak di
/usr/bin/python3.7
. Anda dapat membaca
dokumentasi tentang flag
-m
jika Anda tidak tahu cara kerjanya (omong-omong, ini sangat berguna).
Mengapa menggunakan python -m pip bukan pip / pip3?
Anda dapat mengatakan: "Oke, tapi mengapa saya tidak bisa menggunakan
pip dengan menjalankan perintah
pip ?" Jawabannya adalah: "Ya, tetapi Anda akan memiliki kontrol yang lebih sedikit terhadapnya." Saya akan menjelaskan apa artinya "kurang mengontrol" dengan sebuah contoh.
Misalkan saya memiliki dua versi Python diinstal, misalnya, Python 3.7 dan 3.8 (ini sangat umum di antara orang-orang yang bekerja di Mac OS atau Linux, belum lagi fakta bahwa Anda mungkin ingin bermain dengan Python 3.8, dan Anda sudah memiliki Python 3.7). Jadi, jika Anda mengetik
pip di terminal, untuk juru bahasa Python mana Anda akan menginstal paket?
Tanpa informasi lebih rinci Anda tidak akan tahu jawabannya. Pertama, Anda perlu memahami apa yang ada di PATH, yaitu,
/usr/bin
berjalan lebih dulu atau
/usr/local/bin
(yang merupakan tempat paling umum untuk menginstal Python, dengan cara biasanya
/usr/local/
pergi dulu). Jadi, Anda ingat di mana Anda menginstal Python 3.7 dan 3.8 dan mereka adalah direktori yang berbeda, dan Anda akan tahu apa yang ada di PATH terlebih dahulu. Misalkan Anda menginstal keduanya secara manual, mungkin Python 3.7.3 sudah diinstal sebelumnya pada sistem Anda, dan Anda menginstal Python 3.7.5. Dalam hal ini, kedua versi Python diinstal di
/usr/local/bin
. Bisakah Anda memberi tahu saya sekarang
pip apa
yang sekarang terpasang?
Anda tidak tahu jawabannya. Jika Anda tidak tahu kapan setiap versi diinstal, dan Anda memahami bahwa versi terbaru dari
pip ditulis ke
/usr/local/bin/pip
, tetapi Anda tidak tahu penerjemah mana yang akan digunakan untuk perintah
pip . Sekarang Anda dapat mengatakan: "Saya selalu menginstal versi terbaru, sehingga itu berarti bahwa Python 3.8.0 akan diinstal terakhir, karena itu lebih baru daripada, katakanlah, 3.7.5." Oke, tetapi apa yang terjadi ketika Python 3.7 keluar .6?
Pip Anda tidak lagi digunakan dari Python 3.8, tetapi dari Python 3.7.
Ketika Anda menggunakan
python -m pip dengan juru bahasa python spesifik yang Anda butuhkan, semua ambiguitas menghilang. Jika saya menulis
pip python3.8 -m , saya tahu persis
pip mana yang akan digunakan dan paket yang akan diinstal untuk Python 3.8 (hal yang sama akan terjadi jika saya menunjukkan python3.7).
Jika Anda menggunakan Windows, maka Anda memiliki insentif tambahan untuk menggunakan
python -m pip , karena memungkinkan
pip untuk memperbarui sendiri. Sebagian besar karena
pip.exe dianggap berjalan ketika Anda menulis
pip install --upgrade pip . Pada titik ini, Windows tidak akan memungkinkan Anda untuk menginstal ulang
pip.exe . Namun, jika Anda melakukan
instalasi python-m pip --upgrade pip , Anda mengatasi masalah ini saat
python.exe diluncurkan, bukan
pip.exe .
Dan apa yang terjadi ketika saya berada di lingkungan yang diaktifkan?
Biasanya, ketika saya menjelaskan esensi artikel ini kepada orang-orang, selalu ada seseorang yang akan berkata: "Saya selalu menggunakan lingkungan virtual, dan ini tidak berlaku untuk saya." Sebagai permulaan, SELALU akan baik untuk menggunakan lingkungan virtual! (Saya akan menjelaskan mengapa saya berpikir demikian dalam salah satu artikel saya berikutnya!) Tapi jujur, saya masih bersikeras menggunakan
python -m pip , bahkan jika, sebenarnya, ini tidak perlu.
Pertama, jika Anda menggunakan Windows, Anda masih ingin menggunakan
python-m pip sehingga Anda dapat memperbarui
pip di lingkungan Anda.
Kedua, bahkan jika Anda menggunakan sistem operasi yang berbeda, saya akan mengatakan bahwa Anda masih perlu menggunakan
python-m pip , karena itu akan berfungsi terlepas dari situasinya. Dia akan memperingatkan Anda tentang kesalahan jika Anda lupa mengaktifkan lingkungan, dan siapa pun yang melihat Anda akan mengadopsi praktik terbaik. Dan secara pribadi, saya tidak berpikir bahwa menabung 10 penekanan tombol adalah harga yang signifikan karena tidak menggunakan praktik yang baik. Dan perintah ini juga akan membantu Anda mencegah kesalahan saat menulis skrip otomatisasi yang akan melakukan operasi yang jelas salah jika Anda lupa untuk mengaktifkan lingkungan.
Secara pribadi, ketika saya menggunakan alat apa pun yang pekerjaannya tergantung pada juru bahasa mana yang memulai, saya selalu menggunakan
-m
, terlepas dari apakah lingkungan virtual diaktifkan atau tidak. Selalu penting bagi saya untuk memahami interpreter Python yang saya gunakan.
SELALU gunakan lingkungan! Jangan letakkan semuanya secara berurutan di penerjemah global!
Ketika kita berbicara tentang cara menghindari kebingungan saat memasang dengan Python, saya ingin menekankan bahwa kita tidak boleh menginstal apa pun pada juru bahasa Python global ketika kita bekerja secara lokal (kontainer adalah masalah yang sama sekali berbeda)! Jika ini adalah Python pra-instal sistem Anda, maka jika Anda menginstal versi perpustakaan yang tidak kompatibel yang diandalkan OS Anda, maka Anda benar-benar akan merusak sistem.
Tetapi bahkan jika Anda menginstal salinan
python secara terpisah untuk Anda sendiri, saya masih sangat menyarankan untuk tidak menginstalnya secara langsung dalam pengembangan lokal. Pada akhirnya, Anda akan menggunakan berbagai paket dalam proyek Anda yang mungkin saling bertentangan, dan Anda tidak akan memiliki gagasan yang jelas tentang ketergantungan dalam proyek Anda. Jauh lebih baik untuk menggunakan lingkungan untuk mengisolasi proyek dan alat individu untuk mereka dari satu sama lain. Komunitas Python menggunakan dua jenis lingkungan: lingkungan virtual dan lingkungan conda. Bahkan ada cara khusus untuk menginstal alat Python secara terpisah.
Jika Anda perlu menginstal alat
Untuk pemasangan alat yang berdiri
sendiri , saya dapat merekomendasikan menggunakan
pipx . Setiap alat akan menerima lingkungan virtualnya sendiri, agar tidak bertentangan dengan yang lain. Jadi, jika Anda hanya ingin memiliki satu instalasi, misalnya,
Black , Anda dapat bekerja tanpa merusak satu-satunya instalasi
mypy Anda .
Jika Anda memerlukan lingkungan proyek (dan Anda tidak menggunakan konda)
Ketika Anda perlu membuat lingkungan untuk proyek, saya pribadi selalu beralih ke lingkungan virtual dan
vv . Ini termasuk dalam
stdlib Python, jadi selalu tersedia menggunakan
python-m venv (kecuali, tentu saja, Anda menggunakan Debian atau Ubuntu, dalam hal ini Anda mungkin perlu menginstal paket
apt python3-venv ). Sedikit sejarah: Saya benar-benar menghapus perintah
pyvenv lama yang dipasang Python untuk membuat lingkungan virtual menggunakan
venv , untuk alasan yang sama mengapa Anda perlu menggunakan
python -m pip bukan
pip . Artinya, tidak jelas juru bahasa mana yang Anda buat lingkungan virtual menggunakan
perintah pyvenv lama. Dan ingat bahwa Anda tidak perlu mengaktifkan lingkungan untuk menggunakan penerjemah yang terkandung di dalamnya, karena
.venv/bin/python
berfungsi serta mengaktifkan lingkungan dan memasukkan perintah
python .
Saat ini, beberapa pengembang masih lebih suka
virtualenv , karena tersedia dalam Python 2 dan memiliki beberapa fitur tambahan. Secara pribadi, saya tidak begitu tertarik pada fitur tambahan, dan memiliki
venv terintegrasi berarti saya tidak perlu menggunakan
pipx untuk menginstal
virtualenv di setiap mesin. Tetapi jika
venv tidak
sesuai dengan kebutuhan Anda dan Anda menginginkan lingkungan virtual, maka lihat apakah
virtualenv menawarkan apa yang Anda butuhkan.
Jika Anda menggunakan conda
Jika Anda menggunakan
conda , Anda dapat menggunakan lingkungan
conda untuk mendapatkan efek yang sama dengan lingkungan virtual yang disediakan oleh
venv . Saya tidak akan membahas apakah Anda perlu menggunakan conda atau venv dalam situasi spesifik Anda, tetapi jika Anda menggunakan
conda , maka Anda tahu bahwa Anda dapat (dan harus) membuat lingkungan
conda untuk pekerjaan Anda, alih-alih memasang semuanya di Anda sendiri instalasi sistem. Jadi Anda bisa mendapatkan pemahaman yang jelas tentang dependensi apa yang dimiliki proyek Anda (dan ini adalah alasan yang baik untuk menggunakan
miniconda alih-alih
anaconda penuh, karena yang pertama kurang dari sepersepuluh volume yang terakhir).
Selalu ada wadah
Bekerja dalam sebuah wadah adalah cara untuk tidak berurusan dengan lingkungan sama sekali, karena seluruh "mesin" Anda akan menjadi lingkungan yang terpisah. Sampai Anda telah menginstal Python dalam sistem wadah, Anda harus dapat melakukan instalasi global dengan aman sehingga wadah Anda tetap sederhana dan mudah.
Saya ulangi bahwa Anda benar-benar memahami esensi ...
Jangan menginstal apa pun di juru bahasa Python global Anda! Selalu berusaha menggunakan lingkungan untuk pengembangan lokal!Saya tidak bisa lagi mengatakan berapa kali saya harus membantu seseorang yang berpikir bahwa pip diinstal dalam satu interpreter Python, tetapi sebenarnya diinstal pada yang lain. Dan jumlah yang tak terukur ini juga berlaku pada saat-saat ketika orang merusak seluruh sistem atau bertanya-tanya mengapa mereka tidak dapat menginstal sesuatu yang bertentangan dengan beberapa hal lain yang telah mereka tetapkan sebelumnya untuk proyek lain, dll. karena fakta bahwa mereka tidak repot-repot mengkonfigurasi lingkungan pada mesin lokal mereka.
Karena itu, agar Anda dan saya dapat tidur nyenyak, gunakan
python-m pip dan cobalah untuk selalu menggunakan lingkungan.