Sebagai data scientist, Anda mungkin harus mengonfigurasi variabel lingkungan untuk proyek data science secara lokal atau global, di suatu platform. Panduan ini akan menunjukkan semua yang perlu Anda ketahui!
Anda mungkin pernah menemui sebuah perangkat lunak yang meminta izin untuk memodifikasi variabel PATH Anda, atau instruksi instalasi program lain yang secara samar menyuruh Anda untuk "menyetel variabel LD_LIBRARY_PATH Anda dengan benar".
Sebagai data scientist, Anda mungkin menemui masalah variabel lingkungan lain saat berinteraksi dengan tumpukan komputasi Anda (terutama jika Anda tidak memiliki kendali penuh atasnya, seperti saya). Artikel ini bertujuan mengurai apa itu variabel lingkungan, dan bagaimana penggunaannya dalam konteks data science.
Apa Itu Variabel Lingkungan?
Pertama-tama, izinkan saya menjelaskan apa itu variabel lingkungan, dengan mengulas secara mendalam variabel lingkungan PATH. Saya mendorong Anda untuk menjalankan perintah di sini di terminal bash Anda (dengan penyesuaian yang sesuai — baca teksnya untuk memahami apa yang saya lakukan!).
Saat Anda masuk ke sistem komputer, misalnya terminal komputer lokal Anda atau server jarak jauh melalui SSH, interpreter bash Anda perlu tahu ke mana harus mencari program tertentu, seperti nano (editor teks), atau git (perangkat lunak kontrol versi Anda), atau executable Python Anda. Ini dikendalikan oleh variabel PATH Anda. Variabel tersebut menentukan path ke folder tempat program executable Anda berada.
Berdasarkan konvensi historis, program baris perintah seperti nano, which, dan top, berada di direktori /usr/bin. (Menurut konvensi historis, folder /bin adalah untuk biner perangkat lunak, itulah sebabnya dinamakan /bin.) Program-program ini dibundel dengan sistem operasi Anda, dan karenanya memerlukan izin khusus untuk ditingkatkan.
Cobalah di terminal Anda:
$ which which
/usr/bin/which
$ which top
/usr/bin/top
Didukung oleh
Program lain (dengan berbagai alasan) diinstal ke /bin sebagai gantinya. ls adalah salah satu contohnya:
Bagaimana terminal Bash Anda mengetahui ke mana harus mencari? Ia menggunakan variabel lingkungan PATH. Bentuknya kira-kira seperti ini:
$ echo $PATH/usr/bin:/bin:/usr/local/bin
Didukung oleh
Hal terpenting yang perlu diingat tentang variabel PATH adalah bahwa variabel ini "dipisahkan dengan tanda titik dua". Artinya, setiap path direktori dipisahkan oleh tanda "titik dua" (:). Urutan pencarian program oleh terminal bash Anda berjalan dari kiri ke kanan:
/usr/bin
/bin
/usr/local/bin
Di komputer saya, ketika saya mengetik ls, interpreter bash saya akan melihat ke dalam direktori /usr/bin terlebih dahulu. Ia akan menemukan bahwa ls tidak ada di /usr/bin, lalu beralih ke direktori berikutnya, /bin. Karena ls saya berada di bawah /bin, maka program ls akan dijalankan dari sana.
Anda bisa melihat, ini sekaligus sangat fleksibel untuk menyesuaikan lingkungan komputasi Anda, namun juga berpotensi sangat membuat frustrasi jika suatu program memodifikasi variabel PATH Anda tanpa sepengetahuan Anda.
Tunggu, apakah Anda benar-benar bisa memodifikasi variabel PATH Anda? Ya, dan ada beberapa cara untuk melakukannya.
Cara Memodifikasi variabel PATH
Menggunakan Sesi Bash
Cara pertama bersifat sementara, hanya berlaku untuk sesi bash Anda saat ini. Anda dapat membuat sebuah folder memiliki prioritas lebih tinggi daripada path yang ada dengan "menambahkan di depan" variabel PATH:
$ exportPATH=/path/to/my/folder:$PATH
$ echo $PATH/path/to/my/folder:/usr/bin:/bin:/usr/local/bin
Didukung oleh
Atau Anda dapat memberinya prioritas lebih rendah daripada path yang ada dengan "menambahkan di belakang" variabel PATH:
$ exportPATH=$PATH:/path/to/my/folder
$ echo $PATH/usr/bin:/bin:/usr/local/bin:/path/to/my/folder
Didukung oleh
Alasan ini bersifat sementara adalah karena saya hanya mengekspornya selama sesi bash saat ini.
Berkas bashrc atau .bash_profile
Jika saya ingin membuat perubahan saya agak lebih permanen, maka saya akan menambahkannya ke dalam berkas .bashrc atau .bash_profile. (Saya menyarankan menggunakan berkas .bashrc.) Berkas .bashrc/.bash_profile berada di dalam direktori home Anda (ditentukan oleh variabel lingkungan $HOME), dan merupakan berkas yang akan dijalankan pertama kali oleh interpreter bash saat dimuat. Ia akan menjalankan semua perintah di dalamnya. Artinya, Anda dapat mengubah variabel PATH dengan cukup menambahkan di dalam .bashrc Anda:
...other stuff above...
# Make /path/to/folder have higher priority
exportPATH=/path/to/folder:$PATH
# Make /path/to/other/folder have lower priority
exportPATH=$PATH:/path/to/folder
...other stuff below...Didukung oleh
Data Science dan variabel lingkungan PATH
Sekarang, apa relevansinya bagi data scientist? Jika Anda seorang data scientist, besar kemungkinan Anda menggunakan Python, dan interpreter Python Anda berasal dari distribusi Anaconda Python (sangat bagus, silakan coba!). Installer Anaconda Python memprioritaskan folder /path/to/anaconda/bin dalam variabel lingkungan PATH. Anda mungkin memiliki interpreter Python lain yang terpasang di sistem Anda (misalnya, Apple menyertakan miliknya sendiri). Namun, modifikasi PATH ini memastikan bahwa setiap kali Anda mengetik python di terminal Bash, Anda menjalankan interpreter Python yang disertakan dalam distribusi Anaconda Python. Dalam kasus saya, setelah memasang distribusi Anaconda Python, PATH saya terlihat seperti:
$ echo $PATH/Users/ericmjl/anaconda/bin:/usr/bin:/bin:/usr/local/bin
Didukung oleh
Lebih baik lagi, environment conda akan menambahkan path ke folder biner environment conda di depan saat environment diaktifkan. Misalnya, untuk blog saya, saya menyimpannya dalam environment bernama lektor. Jadi...
$ echo $PATH/Users/ericmjl/anaconda/bin:/usr/bin:/bin:/usr/local/bin
$ which python
/Users/ericmjl/anaconda/bin/python
$ source activate lektor
$ echo $PATH/Users/ericmjl/anaconda/envs/lektor/bin:/Users/ericmjl/anaconda/bin:/usr/bin:/bin:/usr/local/bin
$ which python
/Users/ericmjl/anaconda/envs/lektor/bin/python
Didukung oleh
Perhatikan bagaimana terminal bash kini lebih memprioritaskan Python di dalam environment lektor yang prioritasnya lebih tinggi.
Jika Anda sudah sampai di sini, semoga Anda menyadari ada beberapa konsep penting yang disebutkan. Mari kita rangkum:
PATH adalah variabel lingkungan yang disimpan sebagai string teks polos dan digunakan oleh interpreter bash untuk mencari tahu di mana menemukan program executable.
PATH dipisahkan dengan tanda titik dua; direktori berprioritas lebih tinggi berada di sebelah kiri string, sedangkan direktori berprioritas lebih rendah berada di sebelah kanan string.
PATH dapat dimodifikasi dengan menambahkan direktori di depan atau di belakang variabel lingkungan. Ini dapat dilakukan secara sementara di dalam sesi bash dengan menjalankan perintah export pada prompt perintah, atau dapat dilakukan secara permanen lintas sesi bash dengan menambahkan baris export di dalam .bashrc atau .bash_profile Anda.
Variabel Lingkungan Lain yang Perlu Diperhatikan
Lalu, variabel lingkungan apa lagi yang mungkin ditemui data scientist? Berikut adalah beberapa contohnya yang mungkin Anda lihat, dan mungkin perlu Anda perbaiki, terutama dalam konteks ketika administrator sistem Anda sedang berlibur (atau terlalu lama merespons).
Untuk penggunaan umum, Anda pasti ingin tahu di mana folder HOME Anda — pada sistem Linux, sering kali /home/username, sedangkan pada sistem macOS, sering kali /Users/username. Anda dapat mengetahui nilai HOME dengan melakukan:
Jika Anda pengguna Python, maka PYTHONPATH adalah salah satu variabel yang mungkin berguna. Variabel ini digunakan oleh interpreter Python, dan menentukan lokasi modul/paket Python.
Jika Anda harus berurusan dengan pustaka C++, maka mengetahui variabel lingkungan LD_LIBRARY_PATH akan sangat penting. Saya tidak cukup ahli untuk mengulasnya secara mendalam, jadi saya sarankan merujuk ke situs web ini untuk informasi lebih lanjut tentang praktik terbaik penggunaan variabel LD_LIBRARY_PATH.
Jika Anda bekerja dengan Spark, maka variabel lingkungan PYSPARK_PYTHON akan menarik. Ini pada dasarnya memberi tahu Spark Python mana yang akan digunakan untuk driver dan worker; Anda juga dapat menyetel PYSPARK_DRIVER_PYTHON terpisah dari variabel lingkungan PYSPARK_PYTHON, jika diperlukan.
Oprek Variabel Lingkungan Anda
Di sinilah bagian paling seru! Ikuti beberapa hal yang bisa Anda lakukan dengan mengoprek variabel lingkungan.
Oprek #1: Aktifkan akses ke PyPy. Sesekali saya mengikuti perkembangan PyPy, tetapi karena PyPy belum menjadi interpreter Python default, dan belum bisa di-conda install, saya harus menaruhnya di direktori $HOME/pypy/bin tersendiri. Untuk mengaktifkan akses ke interpreter PyPy, saya harus memastikan bahwa /path/to/pypy ada dalam variabel lingkungan PATH, namun dengan prioritas lebih rendah daripada interpreter CPython reguler saya.
Oprek #2: Aktifkan akses ke interpreter/kompiler bahasa lain. Ini mirip dengan PyPy. Saya pernah mencoba interpreter JIT Lua untuk menggunakan Torch dalam deep learning, dan perlu menambahkan path ke sana di .bashrc saya.
Oprek #3: Pasang paket Python ke direktori home Anda. Pada sistem komputasi Linux bersama yang menggunakan sistem modules alih-alih environment conda, sebuah modulefile yang Anda muat mungkin dikonfigurasi dengan virtual environment yang tidak Anda punya izin untuk memodifikasinya. Jika Anda perlu memasang paket Python, Anda mungkin ingin menjalankan pip install --user my_pkg_name. Ini akan memasangnya ke $HOME/.local/lib/python-[version]/site-packages/. Memastikan bahwa PYTHONPATH Anda menyertakan $HOME/.local/lib/python-[version]/site-packages dengan prioritas yang cukup tinggi akan penting dalam kasus ini.
Oprek #4: Debug saat ada masalah. Jika sesuatu memunculkan error, atau Anda mengalami perilaku yang tak terduga — misalnya yang pernah saya alami adalah interpreter Python saya tidak ditemukan dengan benar setelah memuat semua modul Linux — maka cara untuk debug adalah dengan sementara menyetel variabel lingkungan PATH Anda ke nilai "default" yang masuk akal dan melakukan source, sehingga secara efektif "mereset" variabel PATH Anda, lalu Anda bisa menambahkan di depan/belakang secara manual saat debugging.
Untuk melakukannya, tempatkan baris berikut di dalam berkas bernama .path_default, di dalam direktori home Anda:
exportPATH="" # resets PATH to an empty string.exportPATH=/usr/bin:/bin:/usr/local/bin:$PATH # this is a sensible default; customize as needed.Didukung oleh
Setelah terjadi masalah, Anda dapat mereset variabel lingkungan PATH dengan menggunakan perintah "source":
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Anda mungkin pernah menemui sebuah perangkat lunak yang meminta izin untuk memodifikasi variabel
PATHAnda, atau instruksi instalasi program lain yang secara samar menyuruh Anda untuk "menyetel variabelLD_LIBRARY_PATHAnda dengan benar".Sebagai data scientist, Anda mungkin menemui masalah variabel lingkungan lain saat berinteraksi dengan tumpukan komputasi Anda (terutama jika Anda tidak memiliki kendali penuh atasnya, seperti saya). Artikel ini bertujuan mengurai apa itu variabel lingkungan, dan bagaimana penggunaannya dalam konteks data science.
Apa Itu Variabel Lingkungan?
Pertama-tama, izinkan saya menjelaskan apa itu variabel lingkungan, dengan mengulas secara mendalam variabel lingkungan
PATH. Saya mendorong Anda untuk menjalankan perintah di sini di terminal bash Anda (dengan penyesuaian yang sesuai — baca teksnya untuk memahami apa yang saya lakukan!).Saat Anda masuk ke sistem komputer, misalnya terminal komputer lokal Anda atau server jarak jauh melalui SSH, interpreter bash Anda perlu tahu ke mana harus mencari program tertentu, seperti
nano(editor teks), ataugit(perangkat lunak kontrol versi Anda), atau executable Python Anda. Ini dikendalikan oleh variabel PATH Anda. Variabel tersebut menentukan path ke folder tempat program executable Anda berada.Berdasarkan konvensi historis, program baris perintah seperti
nano,which, dantop, berada di direktori/usr/bin. (Menurut konvensi historis, folder/binadalah untuk biner perangkat lunak, itulah sebabnya dinamakan/bin.) Program-program ini dibundel dengan sistem operasi Anda, dan karenanya memerlukan izin khusus untuk ditingkatkan.Cobalah di terminal Anda:
Program lain (dengan berbagai alasan) diinstal ke
/binsebagai gantinya.lsadalah salah satu contohnya:Program lain lagi mungkin diinstal di direktori khusus lainnya:
Bagaimana terminal Bash Anda mengetahui ke mana harus mencari? Ia menggunakan variabel lingkungan
PATH. Bentuknya kira-kira seperti ini:Hal terpenting yang perlu diingat tentang variabel
PATHadalah bahwa variabel ini "dipisahkan dengan tanda titik dua". Artinya, setiap path direktori dipisahkan oleh tanda "titik dua" (:). Urutan pencarian program oleh terminal bash Anda berjalan dari kiri ke kanan:/usr/bin/bin/usr/local/binDi komputer saya, ketika saya mengetik
ls, interpreter bash saya akan melihat ke dalam direktori/usr/binterlebih dahulu. Ia akan menemukan bahwalstidak ada di/usr/bin, lalu beralih ke direktori berikutnya,/bin. Karenalssaya berada di bawah/bin, maka programlsakan dijalankan dari sana.Anda bisa melihat, ini sekaligus sangat fleksibel untuk menyesuaikan lingkungan komputasi Anda, namun juga berpotensi sangat membuat frustrasi jika suatu program memodifikasi variabel
PATHAnda tanpa sepengetahuan Anda.Tunggu, apakah Anda benar-benar bisa memodifikasi variabel
PATHAnda? Ya, dan ada beberapa cara untuk melakukannya.Cara Memodifikasi variabel
PATHMenggunakan Sesi Bash
Cara pertama bersifat sementara, hanya berlaku untuk sesi bash Anda saat ini. Anda dapat membuat sebuah folder memiliki prioritas lebih tinggi daripada path yang ada dengan "menambahkan di depan" variabel
PATH:Atau Anda dapat memberinya prioritas lebih rendah daripada path yang ada dengan "menambahkan di belakang" variabel
PATH:Alasan ini bersifat sementara adalah karena saya hanya mengekspornya selama sesi bash saat ini.
Berkas
bashrcatau.bash_profileJika saya ingin membuat perubahan saya agak lebih permanen, maka saya akan menambahkannya ke dalam berkas
.bashrcatau.bash_profile. (Saya menyarankan menggunakan berkas.bashrc.) Berkas.bashrc/.bash_profileberada di dalam direktori home Anda (ditentukan oleh variabel lingkungan$HOME), dan merupakan berkas yang akan dijalankan pertama kali oleh interpreter bash saat dimuat. Ia akan menjalankan semua perintah di dalamnya. Artinya, Anda dapat mengubah variabel PATH dengan cukup menambahkan di dalam.bashrcAnda:Data Science dan variabel lingkungan
PATHSekarang, apa relevansinya bagi data scientist? Jika Anda seorang data scientist, besar kemungkinan Anda menggunakan Python, dan interpreter Python Anda berasal dari distribusi Anaconda Python (sangat bagus, silakan coba!). Installer Anaconda Python memprioritaskan folder
/path/to/anaconda/bindalam variabel lingkunganPATH. Anda mungkin memiliki interpreter Python lain yang terpasang di sistem Anda (misalnya, Apple menyertakan miliknya sendiri). Namun, modifikasiPATHini memastikan bahwa setiap kali Anda mengetikpythondi terminal Bash, Anda menjalankan interpreter Python yang disertakan dalam distribusi Anaconda Python. Dalam kasus saya, setelah memasang distribusi Anaconda Python,PATHsaya terlihat seperti:Lebih baik lagi, environment conda akan menambahkan path ke folder biner environment conda di depan saat environment diaktifkan. Misalnya, untuk blog saya, saya menyimpannya dalam environment bernama
lektor. Jadi...Perhatikan bagaimana terminal bash kini lebih memprioritaskan Python di dalam environment
lektoryang prioritasnya lebih tinggi.Jika Anda sudah sampai di sini, semoga Anda menyadari ada beberapa konsep penting yang disebutkan. Mari kita rangkum:
PATHadalah variabel lingkungan yang disimpan sebagai string teks polos dan digunakan oleh interpreter bash untuk mencari tahu di mana menemukan program executable.PATHdipisahkan dengan tanda titik dua; direktori berprioritas lebih tinggi berada di sebelah kiri string, sedangkan direktori berprioritas lebih rendah berada di sebelah kanan string.PATHdapat dimodifikasi dengan menambahkan direktori di depan atau di belakang variabel lingkungan. Ini dapat dilakukan secara sementara di dalam sesi bash dengan menjalankan perintahexportpada prompt perintah, atau dapat dilakukan secara permanen lintas sesi bash dengan menambahkan barisexportdi dalam.bashrcatau.bash_profileAnda.Variabel Lingkungan Lain yang Perlu Diperhatikan
Lalu, variabel lingkungan apa lagi yang mungkin ditemui data scientist? Berikut adalah beberapa contohnya yang mungkin Anda lihat, dan mungkin perlu Anda perbaiki, terutama dalam konteks ketika administrator sistem Anda sedang berlibur (atau terlalu lama merespons).
Untuk penggunaan umum, Anda pasti ingin tahu di mana folder
HOMEAnda — pada sistem Linux, sering kali/home/username, sedangkan pada sistem macOS, sering kali/Users/username. Anda dapat mengetahui nilaiHOMEdengan melakukan:Jika Anda pengguna Python, maka
PYTHONPATHadalah salah satu variabel yang mungkin berguna. Variabel ini digunakan oleh interpreter Python, dan menentukan lokasi modul/paket Python.Jika Anda harus berurusan dengan pustaka C++, maka mengetahui variabel lingkungan
LD_LIBRARY_PATHakan sangat penting. Saya tidak cukup ahli untuk mengulasnya secara mendalam, jadi saya sarankan merujuk ke situs web ini untuk informasi lebih lanjut tentang praktik terbaik penggunaan variabelLD_LIBRARY_PATH.Jika Anda bekerja dengan Spark, maka variabel lingkungan
PYSPARK_PYTHONakan menarik. Ini pada dasarnya memberi tahu Spark Python mana yang akan digunakan untuk driver dan worker; Anda juga dapat menyetelPYSPARK_DRIVER_PYTHONterpisah dari variabel lingkunganPYSPARK_PYTHON, jika diperlukan.Oprek Variabel Lingkungan Anda
Di sinilah bagian paling seru! Ikuti beberapa hal yang bisa Anda lakukan dengan mengoprek variabel lingkungan.
Oprek #1: Aktifkan akses ke PyPy. Sesekali saya mengikuti perkembangan PyPy, tetapi karena PyPy belum menjadi interpreter Python default, dan belum bisa di-
conda install, saya harus menaruhnya di direktori$HOME/pypy/bintersendiri. Untuk mengaktifkan akses ke interpreter PyPy, saya harus memastikan bahwa/path/to/pypyada dalam variabel lingkunganPATH, namun dengan prioritas lebih rendah daripada interpreter CPython reguler saya.Oprek #2: Aktifkan akses ke interpreter/kompiler bahasa lain. Ini mirip dengan PyPy. Saya pernah mencoba interpreter JIT Lua untuk menggunakan Torch dalam deep learning, dan perlu menambahkan path ke sana di
.bashrcsaya.Oprek #3: Pasang paket Python ke direktori home Anda. Pada sistem komputasi Linux bersama yang menggunakan sistem
modulesalih-alih environmentconda, sebuahmodulefileyang Anda muat mungkin dikonfigurasi dengan virtual environment yang tidak Anda punya izin untuk memodifikasinya. Jika Anda perlu memasang paket Python, Anda mungkin ingin menjalankanpip install --user my_pkg_name. Ini akan memasangnya ke$HOME/.local/lib/python-[version]/site-packages/. Memastikan bahwaPYTHONPATHAnda menyertakan$HOME/.local/lib/python-[version]/site-packagesdengan prioritas yang cukup tinggi akan penting dalam kasus ini.Oprek #4: Debug saat ada masalah. Jika sesuatu memunculkan error, atau Anda mengalami perilaku yang tak terduga — misalnya yang pernah saya alami adalah interpreter Python saya tidak ditemukan dengan benar setelah memuat semua modul Linux — maka cara untuk debug adalah dengan sementara menyetel variabel lingkungan PATH Anda ke nilai "default" yang masuk akal dan melakukan source, sehingga secara efektif "mereset" variabel PATH Anda, lalu Anda bisa menambahkan di depan/belakang secara manual saat debugging.
Untuk melakukannya, tempatkan baris berikut di dalam berkas bernama
.path_default, di dalam direktori home Anda:Setelah terjadi masalah, Anda dapat mereset variabel lingkungan PATH dengan menggunakan perintah "source":
Catatan - Anda juga dapat mengeksekusi perintah yang sama persis di dalam sesi bash Anda; interaktivitasnya juga bisa membantu.
Kesimpulan
Semoga Anda menikmati artikel ini, dan semoga ini memberi Anda, ehm, jalan ke depan setiap kali Anda menemui variabel lingkungan seperti ini!