2025, Oct 19 11:31
VS Code devcontainers में Pylance 'Loading information' समस्या का एक‑पंक्ति समाधान
VS Code devcontainers में Pylance के 'Loading information' लूप का त्वरित समाधान: workspaceFolder को / से /workspace करें, autocomplete और hover वापस पाएं
VS Code devcontainers, Pylance “Loading information” पर अटका, और एक-पंक्ति में समाधान
Autocomplete, Go to Definition और hover जानकारी जैसी सुविधाएँ डेवलपर अनुभव की बुनियाद हैं। जब ये devcontainer के अंदर काम करना बंद कर देती हैं, तो उत्पादकता तेजी से गिरती है। आम संकेत यह है कि Pylance हमेशा “Loading information” दिखाता रहता है, पोर्ट बार‑बार बदलते हैं, और RAM बढ़कर अचानक गिरती है—फिर वही चक्र दोहरता है। यहाँ तक कि छोटा‑सा Python फ़ाइल भी “Enumeration of workspace” संदेश को लगातार ट्रिगर कर सकती है, जबकि नोटबुक और स्क्रिप्ट सामान्य रूप से चलते रहते हैं।
अच्छी खबर यह है कि यह व्यवहार अक्सर एक ही गलत कॉन्फ़िगरेशन से आता है। अगर workspace को कंटेनर के root पर सेट कर दिया गया है, तो language server आपके कोड फ़ोल्डर की बजाय पूरे फ़ाइलसिस्टम पर चल पड़ता है।
न्यूनतम विफल सेटअप
सबसे छोटा स्क्रिप्ट भी समस्या को दोहरा सकता है:
label = 'test'
print(label)
ऐसा सामान्य devcontainer जो अंतहीन इंडेक्सिंग छेड़ देता है, workspace को कंटेनर root बताता है। नीचे docker-compose के साथ एक प्रतिनिधि कॉन्फ़िगरेशन है। पहचानकर्ता सिर्फ उदाहरण हैं, व्यवहार समान रहता है।
{
  "name": "TorchDev",
  "dockerComposeFile": "./docker-compose.yaml",
  "service": "gpubox",
  "workspaceFolder": "/",
  "shutdownAction": "stopCompose",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-toolsai.jupyter",
        "ms-python.vscode-pylance",
        "ms-python.python"
      ]
    }
  }
}
services:
  gpubox:
    container_name: gpubox
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8888:8888"
    environment:
      - JUPYTER_TOKEN=easy
    working_dir: /
    volumes:
      - ../:/workspace
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              capabilities: ["gpu"]
              device_ids: ["0"]
    command: sleep infinity
असल में गड़बड़ी क्या है
जब workspace / पर सेट होता है, संपादक पूरे कंटेनर फ़ाइलसिस्टम को परियोजना मान लेता है। Pylance फिर उस पूरी ट्री को enumerate करने की कोशिश करता है। नतीजा वही दिखता है: कभी न खत्म होने वाला “Loading information”, बार‑बार “Enumeration of workspace”, और मेमोरी स्पाइक्स जिनके बाद सर्वर रीस्टार्ट होकर फिर कोशिश करता है।
Workspace को केवल उसी फ़ोल्डर तक सीमित रखें जो आपके लिए प्रासंगिक है। devcontainer.json में बदलकर VS Code का workspace / नहीं, बल्कि /workspace (जहाँ आपका कोड है) करें।
समाधान
Workspace को कंटेनर root के बजाय माउंट की गई कोड डायरेक्टरी की ओर पॉइंट करें। इस सेटअप में कोड /workspace में है, इसलिए वही पथ workspace होना चाहिए।
{
  "name": "TorchDev",
  "dockerComposeFile": "./docker-compose.yaml",
  "service": "gpubox",
  "workspaceFolder": "/workspace",
  "shutdownAction": "stopCompose",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-toolsai.jupyter",
        "ms-python.vscode-pylance",
        "ms-python.python"
      ]
    }
  }
}
और किसी बदलाव की ज़रूरत नहीं। इससे संपादक पूरे कंटेनर में क्रॉल करना बंद कर देता है और language server का काम केवल आपके प्रोजेक्ट फ़ाइलों तक सीमित रहता है।
यह क्यों महत्वपूर्ण है
Python, Jupyter और Pylance की भाषा सुविधाएँ आपके कोडबेस की responsive इंडेक्सिंग पर टिकी होती हैं। जब workspace में पूरा फ़ाइलसिस्टम शामिल हो, तो साधारण प्रोजेक्ट भी भारी स्कैन और रीस्टार्ट में बदल जाते हैं। Workspace का दायरा सही तय करने से तुरंत hover जानकारी, भरोसेमंद ऑटो‑कम्प्लीट और स्थिर संसाधन उपयोग वापस मिल जाता है।
व्यावहारिक सुझाव
Workspace को संकरा और स्पष्ट रखें। अपने सोर्स को कंटेनर के भीतर एक समर्पित डायरेक्टरी में मैप करें और संपादक को उसी पथ पर निर्देशित करें। अगर छोटे प्रोजेक्ट में “Enumeration of workspace” दिखे, तो जाँचें कि workspace / पर सेट तो नहीं है। अक्सर सिर्फ यही सटीक सेटिंग Pylance को फिर सामान्य अवस्था में ले आती है।
यह लेख StackOverflow पर प्रश्न (लेखक: I'mStuckOnLine911) और Philipp1297 के उत्तर पर आधारित है।