2025, Nov 01 06:02
Anaconda के साथ Ubuntu पर geopy import फेल? यही है कारण और समाधान
Ubuntu पर Anaconda से geopy इंस्टॉल है, पर import नहीं हो रहा? वजह है गलत इंटरप्रेटर. conda सक्रिय हो तो python (python3 नहीं) चलाएं—समस्या दूर होगी.
जब Ubuntu पर Anaconda से geopy जैसा पैकेज इंस्टॉल हो, लेकिन Python उसे इम्पोर्ट न कर पाए, तो वजह प्रायः लाइब्रेरी में नहीं होती। असल मुद्दा यह होता है कि आप वास्तव में कौन‑सा Python इंटरप्रेटर चला रहे हैं। यदि आप सक्रिय conda एनवायरनमेंट वाले इंटरप्रेटर के बजाय सिस्टम इंटरप्रेटर को कॉल करते हैं, तो आपके import अभी-अभी इंस्टॉल किए गए पैकेज नहीं ढूंढ पाएंगे।
परिस्थिति में लक्षण
पैकेज conda एनवायरनमेंट में मौजूद है:
(base) igor@XPS-13:~$ conda list | grep geopy
geopy 2.4.1 pyhd8ed1ab_2 conda-forge
आप इसे Anaconda की डिरेक्टरीज़ में भी देख सकते हैं:
(base) igor@XPS-13:~$ find -type d -name "*geopy*"
./anaconda3/pkgs/geopy-2.4.1-pyhd8ed1ab_2
./anaconda3/pkgs/geopy-2.4.1-pyhd8ed1ab_2/site-packages/geopy-2.4.1.dist-info
./anaconda3/pkgs/geopy-2.4.1-pyhd8ed1ab_2/site-packages/geopy
./anaconda3/lib/python3.12/site-packages/geopy-2.4.1.dist-info
./anaconda3/lib/python3.12/site-packages/geopy
लेकिन सिस्टम लॉन्चर से शुरू किए गए इंटरैक्टिव सत्र में import विफल हो जाता है:
(base) igor@XPS-13:~$ python3
Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import geopy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'geopy'
मॉड्यूल सर्च पाथ देखने से साफ हो जाता है कि Anaconda की डिरेक्टरीज़ शामिल नहीं हैं:
>>> import sys as sy
>>> print(sy.path)
['', '/usr/lib/python312.zip', '/usr/lib/python3.12', '/usr/lib/python3.12/lib-dynload', '/usr/local/lib/python3.12/dist-packages', '/usr/lib/python3/dist-packages']
क्या हो रहा है
आप Anaconda वाला नहीं, सिस्टम का Python चला रहे हैं।
(base) जैसा conda एनवायरनमेंट संकेतक दिखने पर भी, python3 कमांड सिस्टम इंटरप्रेटर ही लॉन्च करता है। सिस्टम इंटरप्रेटर को आपके conda एनवायरनमेंट में इंस्टॉल किए गए पैकेजों की जानकारी नहीं होती, इसलिए geopy नहीं मिलता। आपने जो sys.path प्रिंट किया, वह इसे पुष्ट करता है: उसमें केवल सिस्टम लोकेशन हैं, anaconda3 से कुछ नहीं।
समाधान
जब आपका conda एनवायरनमेंट सक्रिय हो (यानी (base) दिखे), तो python3 के बजाय python कमांड का उपयोग करें।
python कमांड सक्रिय conda एनवायरनमेंट द्वारा प्रदान किए गए इंटरप्रेटर की ओर रिज़ॉल्व होता है। वही इंटरप्रेटर उन site-packages को देखता है जहाँ geopy इंस्टॉल है।
(base) igor@XPS-13:~$ python
Python 3.12.x | packaged by conda-forge | on linux
>>> import geopy
>>> # कोई त्रुटि नहीं आती तो मतलब इम्पोर्ट सफल रहा
यदि आप conda द्वारा उपलब्ध कराए गए इंटरप्रेटर के तहत सर्च पाथ की पुष्टि करना चाहते हैं, तो इसी तरह नाम बदले उपनाम के साथ जाँच लें; तर्क वही रहता है:
>>> import sys as sy
>>> print(sy.path)
# conda के python का उपयोग करते समय यहाँ anaconda3 से जुड़ी पाथ्स दिखेंगी
यह क्यों मायने रखता है
एक मशीन पर कई Python इंटरप्रेटर होने पर, किस इंटरप्रेटर को चुनते हैं, वही तय करता है कि आप किस एनवायरनमेंट और किन पैकेजों के साथ काम कर रहे हैं। सिस्टम के python3 को Anaconda में इंस्टॉल किए पैकेजों के साथ मिलाने से उलझाने वाली import त्रुटियाँ मिलती हैं, भले ही पैकेज डिस्क पर मौजूद हो। सक्रिय conda एनवायरनमेंट के python executable का उपयोग करने से इंटरप्रेटर और पैकेज एक-दूसरे के अनुरूप रहते हैं, टूलिंग पूर्वानुमेय रहती है और imports स्थिर।
निष्कर्ष
यदि conda सक्रिय है, तो सत्र python से शुरू करें, python3 से नहीं। बस यही छोटा बदलाव सुनिश्चित करता है कि आपका कोड उसी इंटरप्रेटर पर चले जिसमें आपके conda‑इंस्टॉल्ड लाइब्रेरी जैसे geopy मौजूद हैं, और अनावश्यक ModuleNotFoundError से छुटकारा मिलता है।
यह लेख StackOverflow पर प्रश्न (लेखक: IgorLopez) और Shivam Bhosle के उत्तर पर आधारित है।