2025, Oct 31 22:32
rgee और Earth Engine में version mismatch: Python 3.11 पर सही सेटअप
rgee में ee_check व ee_Initialize त्रुटियों का हल: Python 3.11 पर अलग env बनाएं, earthengine-api 0.1.370 पिन करें, क्रेडेंशियल रीसेट कर Earth Engine पर काम चलाएं.
rgee को चालू करना सीधा लगता है, जब तक कि सेटअप के बीच में समझ न आने वाली त्रुटियाँ सामने न आ जाएँ। एक आम रुकावट rgee, Earth Engine के Python क्लाइंट (earthengine-api) और reticulate के जरिए उपलब्ध Python संस्करण के बीच बिना किसी संकेत के होने वाली असंगति है। नीचे विफलता के सटीक पैटर्न और उसे सुलझाने वाले चरणों की संक्षिप्त, स्पष्ट मार्गदर्शिका है।
समस्या को दोहराना
सेटअप सामान्य रूप से शुरू होता है: rgee इंस्टॉल करें, reticulate से Python जाँचें, rgee को सिस्टम Python पर इंगित करें, फिर परिवेश सत्यापित करें। इसके बावजूद जाँच विफल हो जाती है और बाद में प्रारंभिककरण एक क्रेडेंशियल त्रुटि देता है, जो दोबारा प्रमाणन के बाद भी बनी रहती है।
install.packages("rgee")
library(rgee)
reticulate::py_available()
reticulate::py_discover_config()
# rgee को सिस्टम Python पर इंगित करें और py environment का नाम दें
rgee::ee_install_set_pyenv(py_path = "/usr/bin/python", py_env = "gee_env")
# परिवेश जाँच
rgee::ee_check()
# वैकल्पिक जाँचें
rgee:::ee_check_python_packages()
rgee:::ee_check_credentials()
# Earth Engine प्रारंभ करें
acct_email <- "maanan.said@gmail.com"
rgee::ee_Initialize(user = acct_email)
पहला संकेत परिवेश जाँच के दौरान “Error in strsplit(a, "[.-]"): non-character argument” जैसी त्रुटि से मिलता है। आगे बढ़ने पर दिखता है कि earthengine-api मौजूद तो है, लेकिन 1.5.24 पर, जबकि rgee बताता है कि उसका परीक्षण 0.1.370 के साथ हुआ था। क्रेडेंशियल मिल जाते हैं, फिर भी ee_Initialize यह संदेश देता है: “It looks like your EE credential has expired…”, और पुनः प्रमाणन करने के बाद भी परिणाम नहीं बदलता।
वास्तव में हो क्या रहा है
असल वजह rgee, इंस्टॉल किए गए earthengine-api और Python 3.13 के बीच संस्करण असंगति है। यह mismatch पहले ee_check त्रुटि के रूप में दिखता है और बाद में एक असंबंधित-सी दिखने वाली प्रारंभिककरण विफलता बनकर बना रहता है, भले ही आप सफाई और पुनः प्रमाणन कर लें। संस्करणों को एक-दूसरे के अनुरूप करना दोनों समस्याएँ खत्म कर देता है।
काम करने वाला उपाय
कारगर समाधान यह है: Python 3.11 का उपयोग करें, rgee के लिए अलग नया environment बनाएं, earthengine-api को 0.1.370 पर पिन करें, फिर सफाई करके दोबारा प्रमाणित करें।
# Python 3.11 इंस्टॉल करें और rgee के लिए समर्पित env बनाएँ
rgee::ee_install_python(py_env = "gee_env", py_version = "3.11")
# rgee को स्पष्ट रूप से Python 3.11 इंटरप्रेटर और नए env से जोड़ें
rgee::ee_install_set_pyenv(py_path = "/usr/bin/python3.11", py_env = "gee_env")
# earthengine-api का वही संस्करण लगाएँ जिसके साथ rgee का परीक्षण हुआ था
reticulate::py_install('earthengine-api==0.1.370', envname = "gee_env")
# क्रेडेंशियल रीसेट करें और पुनः प्रारंभ करें
acct_email <- "maanan.said@gmail.com"
rgee::ee_clean_user_credentials(user = acct_email)
rgee::ee_Initialize(user = acct_email, drive = TRUE, gcs = TRUE)
यह क्यों महत्वपूर्ण है
rgee, reticulate के माध्यम से R और Earth Engine Python API के बीच पुल का काम करता है। जब Python इंटरप्रेटर, earthengine-api पैकेज और rgee तालमेल में नहीं होते, तो ee_check के दौरान सत्यापन त्रुटियाँ और ee_Initialize में आगे चलकर ऐसी विफलताएँ दिखती हैं जो ऊपर-ऊपर क्रेडेंशियल समस्या जैसी लगती हैं। इन घटकों को समन्वित रखने से बेवजह की कोशिश-गलती में लगने वाला समय बचता है और कमज़ोर सेटअप से बचाव होता है।
व्यावहारिक निष्कर्ष
rgee को कॉन्फ़िगर करते समय, उसे Python 3.11 पर आधारित एक अलग Python environment में रखें, rgee की जाँच में बताए अनुसार earthengine-api को 0.1.370 पर पिन करें, और फिर क्रेडेंशियल को दोबारा प्रारंभ करें। यह क्रम बताई गई check त्रुटि और लगातार बनी रहने वाली प्रारंभिककरण विफलता दोनों को हटाकर R से Earth Engine पर स्थिर वर्कफ़्लो देता है।
यह लेख StackOverflow पर एक प्रश्न से लिया गया है, जिसे Saïd Maanan ने पूछा था, और उत्तर भी Saïd Maanan ने दिया था।