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.