एआई इंजीनियर ट्रैक और uv के साथ डेव एनवायरनमेंट
पायथन इंस्टॉल करना, pip की जगह uv का चुनाव, uv init, uv add और uv run से अलग व प्रतिलिपि-योग्य प्रोजेक्ट एनवायरनमेंट, और एडिटर में सही इंटरप्रेटर।
आप कैसे सीखना चाहते हैं?
वह समस्या जिसे हम हल कर रहे हैं
एक नया एआई इंजीनियर एक टीम में शामिल होता है। पहले दिन का काम सीधा और सरल है: अपने लैपटॉप पर प्रोजेक्ट को चलाकर देखना। README में लिखा है "run python main.py"। वे इसे चलाते हैं और एरर आता है: ModuleNotFoundError: No module named 'httpx'। जबकि जिस व्यक्ति ने प्रोजेक्ट लिखा था, उसकी मशीन पर यही कमांड बिल्कुल सही काम कर रहा था।
गहराई से देखने पर पता चलता है कि दो सालों से लेखक की मशीन पर हर प्रोजेक्ट के लिए जो भी पैकेज चाहिए था, वह सब एक ही मुख्य पायथन में जमा होता जा रहा था। इस विशेष प्रोजेक्ट को किन पैकेजों की आवश्यकता है, यह कहीं भी दर्ज नहीं था — केवल इतना पता था कि "यह मेरी मशीन पर चलता है"। नया साथी आधा दिन एक-एक करके पैकेज ढूंढने और इंस्टॉल करने में बिता देता है, और अंत में उनमें से एक का वर्ज़न अलग निकल आता है, जिससे परिणाम भी बदल जाते हैं।
पेशेवर टीमों के पास इसका एक सीधा समाधान है: प्रत्येक प्रोजेक्ट को अपना अलग, आइसोलेटेड (अलग-थलग) एनवायरनमेंट मिलता है, और उस एनवायरनमेंट में क्या-क्या मौजूद है, यह एक फ़ाइल में स्पष्ट लिखा होता है ताकि कोई भी एक ही कमांड से बिल्कुल वैसा ही एनवायरनमेंट तैयार कर सके। इस अध्याय में हम यही बनाएंगे — uv के ज़रिए — और पूरे कोर्स में हम इसी का उपयोग करेंगे।
इस अध्याय के अंत में आप कर पाएंगे
- सामान्य इंस्टॉलर और
uv python installदोनों से पायथन इंस्टॉल करना, और दोनों का अंतर बताना pipक्या है और यह कोर्स इसकी जगहuvका उपयोग क्यों करता है, यह समझानाuv init,uv add,uv runऔरuv venvके साथ एक आइसोलेटेड प्रोजेक्ट एनवायरनमेंट बनाना और चलाना- उदाहरण देकर यह स्पष्ट करना कि प्रोजेक्ट्स को सिस्टम पायथन पर क्यों नहीं चलाना चाहिए
- VS Code या PyCharm में प्रोजेक्ट के अपने इंटरप्रेटर का चयन करना
ज़रूरी शर्तें: टर्मिनल में फ़ोल्डर्स बदलना (cd) और कोई कमांड चलाना। यह कोर्स का पहला अध्याय है, इसलिए किसी अन्य पूर्व-ज्ञान की आवश्यकता नहीं है।
यह करियर ट्रैक कैसे काम करता है
यह कोर्स एक संपूर्ण करियर ट्रैक है। प्रत्येक अध्याय एक कक्षा की तरह है, और प्रत्येक अध्याय आपकी अपनी मशीन पर चलाए जाने वाले एक कार्य के साथ समाप्त होता है। शुरुआती अध्याय पेशेवर काम की नींव रखते हैं — एनवायरनमेंट्स, Git, प्रोजेक्ट संरचना, कॉन्फ़िगरेशन। इसके बाद स्वच्छ पायथन, टेस्टिंग, APIs, डेटाबेस, RAG, सुरक्षा और डिप्लॉयमेंट के विषय आते हैं।
एक बात शुरुआत में ही समझ लेना ज़रूरी है: किसी कंपनी में एआई इंजीनियर का कोड सिर्फ इसलिए स्वीकार नहीं कर लिया जाता क्योंकि वह "चल रहा है"। क्या कोई अन्य व्यक्ति इसे अपनी मशीन पर चला सकता है, क्या कोई इसकी समीक्षा (review) कर सकता है, क्या छह महीने बाद कोई इसे समझ पाएगा — ये सब भी इस काम का अभिन्न हिस्सा हैं। इसलिए इस कोर्स का प्रत्येक व्यावहारिक अभ्यास ऐसे तैयार किया गया है जैसे वह किसी वास्तविक टीम के रिपॉजिटरी में जा रहा हो। और उस आदत का पहला कदम है: एनवायरनमेंट।
पायथन इंस्टॉल करना: दो रास्ते
रास्ता एक — सामान्य इंस्टॉलर। python.org से 3.12 इंस्टॉलर डाउनलोड करें और चलाएं। Windows पर, पहली ही स्क्रीन पर Add python.exe to PATH पर टिक ज़रूर करें; इसके बिना टर्मिनल python कमांड को नहीं पहचान पाएगा। macOS पर, python.org से .pkg चलाना ही पर्याप्त है। Linux पर, python3 आमतौर पर पहले से मौजूद होता है — और इसके बारे में नीचे एक चेतावनी दी गई है।
जाँच करने के लिए:
python --version
Python 3.12.0macOS और Linux पर यह कमांड अक्सर python3 --version होती है।
रास्ता दो — uv के ज़रिए। uv एक अकेला आधुनिक टूल है जो पायथन वर्ज़न्स, प्रोजेक्ट एनवायरनमेंट्स और पैकेजों को संभालता है। पहले uv इंस्टॉल करें। macOS और Linux पर:
curl -LsSf https://astral.sh/uv/install.sh | shWindows PowerShell में:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"इसके बाद एक नया टर्मिनल खोलें:
uv --version
uv 0.9.1 (9887ef5bd 2025-10-09)आपके सिस्टम पर वर्ज़न संख्या भिन्न हो सकती है। अब पायथन इंस्टॉल करें:
uv python install 3.12
Installed Python 3.12.11 in 27.42s
+ cpython-3.12.11-windows-x86_64-none (python3.12.exe)अंत में दिखने वाला समय और प्लेटफ़ॉर्म का नाम आपकी मशीन पर अलग होगा। ध्यान दें कि uv द्वारा इंस्टॉल किया गया पायथन अपने एक अलग फ़ोल्डर में रहता है — यह मशीन के मुख्य पायथन को नहीं छूता, और PATH को नहीं बदलता।
ये दोनों रास्ते साथ-साथ रह सकते हैं, और दोनों इस कोर्स के लिए काम करते हैं। अंतर यह है: सामान्य इंस्टॉलर आपको पूरे कंप्यूटर के लिए एक ही पायथन देता है; जबकि uv python install आपको ऐसे पायथन वर्ज़न्स देता है जिन्हें प्रोजेक्ट्स अपनी ज़रूरत के अनुसार चुन सकते हैं। एक प्रोजेक्ट को 3.12 चाहिए, दूसरे को 3.13 — कोई भी एक-दूसरे के रास्ते में नहीं आता।
pip क्या है, और हम uv क्यों उपयोग करते हैं
पायथन के बाहरी पैकेज — जैसे httpx, pydantic, fastapi — PyPI नामक रिपॉजिटरी में रहते हैं। उन्हें डाउनलोड करने का पारंपरिक टूल pip है, जो पायथन के साथ ही आता है। इंटरनेट के लगभग हर ट्यूटोरियल में pip install ... लिखा होता है।
pip अच्छा काम करता है, लेकिन यह केवल एक ही काम करता है: पैकेज इंस्टॉल करना। और यह उन्हें उसी पायथन में इंस्टॉल करता है जिसके साथ इसे चलाया गया था। एक पेशेवर प्रोजेक्ट के लिए, बाकी हर चीज़ के लिए एक अलग टूल की ज़रूरत पड़ती थी:
- सही पायथन वर्ज़न प्राप्त करना — एक अलग टूल
- आइसोलेटेड एनवायरनमेंट बनाना और सक्रिय करना —
python -m venv, फिर हाथ सेactivateकरना - प्रोजेक्ट की ज़रूरतों को दर्ज करना — हाथ से किसी फ़ाइल में लिखना, जिसे अक्सर लोग भूल जाते हैं
- इस्तेमाल किए गए प्रत्येक पैकेज के सटीक वर्ज़न को लॉक करना (लॉकफ़ाइल) — एक और तीसरा टूल
uv ये चारों काम एक ही टूल में करता है, और बहुत तेज़ी से करता है। सबसे महत्वपूर्ण बात यह है कि जब आप uv add से कुछ जोड़ते हैं, तो वह प्रोजेक्ट की फ़ाइल में अपने आप दर्ज हो जाता है। "मैंने इंस्टॉल तो कर लिया था लेकिन फ़ाइल में लिखना भूल गया" — ऊपर नए सहकर्मी की परेशानी का मूल कारण — इस तरह कभी नहीं हो सकता।
इसलिए जहाँ भी इस कोर्स में पैकेज या एनवायरनमेंट की बात आएगी, वहाँ uv का उपयोग होगा। जब आप कहीं और pip install देखें, तो uv में उसका समकक्ष लगभग हमेशा uv add होता है।
सिस्टम पायथन प्रोजेक्ट्स के लिए सही जगह क्यों नहीं है
"सिस्टम पायथन" वह पायथन है जो सीधे कंप्यूटर पर इंस्टॉल होता है — यानी वह जो बिना किसी एनवायरनमेंट को सक्रिय किए टर्मिनल में python टाइप करने पर चलता है। किसी प्रोजेक्ट के पैकेज इसमें इंस्टॉल करने से तीन गंभीर समस्याएँ पैदा होती हैं:
- सब एक ही कमरे को साझा करते हैं। एक प्रोजेक्ट को
pydantic1 चाहिए, दूसरे को 2। सिस्टम पायथन केवल एक ही रख सकता है, इसलिए एक प्रोजेक्ट को ठीक करने से दूसरा टूट जाता है। - डिपेंडेंसीज़ अदृश्य हो जाती हैं। पैकेज किसी पुराने प्रोजेक्ट के लिए पहले से इंस्टॉल था, इसलिए नया प्रोजेक्ट चल जाता है — फिर भी प्रोजेक्ट में कहीं नहीं लिखा कि उसे उस पैकेज की ज़रूरत है। आपकी मशीन पर कोई एरर नहीं आता; एरर किसी सहकर्मी की मशीन पर या सर्वर पर आता है।
- ऑपरेटिंग सिस्टम इसका उपयोग करता है। macOS और Linux पर, कुछ सिस्टम टूल्स उसी पायथन पर चलते हैं। उनके पैकेजों को बदलने से वे टूट सकते हैं — यही कारण है कि हाल के Linux रिलीज़ सीधे सिस्टम पायथन में इंस्टॉल करने पर रोक लगाते हैं।
दूसरी समस्या सबसे ख़तरनाक है क्योंकि यह शांत (silent) होती है। जिस मशीन पर यह अध्याय लिखा गया था, उसके सिस्टम पायथन में पुराने कामों से बचे हुए httpx, pydantic और rich अब भी मौजूद हैं। इसलिए कोई भी स्क्रिप्ट वहाँ "चल जाती है" — और ठीक इसी वजह से यह जानने का कोई तरीका नहीं रहता कि वास्तव में उस स्क्रिप्ट को क्या चाहिए।
गलत धारणा यह है: "यह मेरी मशीन पर चलता है, इसलिए सब ठीक है।" सिस्टम पायथन पर चलने वाली स्क्रिप्ट केवल यह साबित करती है कि किसी समय आपकी मशीन पर वह पैकेज इंस्टॉल किया गया था। प्रोजेक्ट को वास्तव में क्या चाहिए, यह केवल तब साबित होता है जब सब कुछ प्रोजेक्ट की अपनी फ़ाइल से एक खाली एनवायरनमेंट में इंस्टॉल किया जाए और फिर स्क्रिप्ट सफलतापूर्वक चले।
uv के साथ पहला प्रोजेक्ट
अपने किसी कार्य फ़ोल्डर में रहते हुए:
uv init hello-ai --python 3.12
Initialized project `hello-ai` at `D:i-lab\hello-ai`(अंत में दिखने वाला पाथ आपका अपना फ़ोल्डर होगा; इस अध्याय में पाथ्स को संक्षिप्त करके दिखाया गया है।) uv init एक नया फ़ोल्डर बनाता है, और उसके अंदर:
hello-ai/
├── .git/
├── .gitignore
├── .python-version
├── README.md
├── main.py
└── pyproject.tomlइनमें सबसे महत्वपूर्ण है pyproject.toml — प्रोजेक्ट का पहचान पत्र:
[project]
name = "hello-ai"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = []dependencies = [] — प्रोजेक्ट को अभी किसी बाहरी पैकेज की ज़रूरत नहीं है। .python-version में केवल 3.12 लिखा है: यह प्रोजेक्ट किस पायथन पर चलता है। और uv init ने आपके लिए एक Git रिपॉजिटरी और एक .gitignore भी बना दिया है — जिनका उपयोग अगले अध्याय में होगा।
अब इसे चलाएं:
cd hello-ai
uv run main.py
Using CPython 3.12.11
Creating virtual environment at: .venv
Hello from hello-ai!पहली बार, uv run ने अपने आप एक .venv फ़ोल्डर बना दिया — यह प्रोजेक्ट का अलग एनवायरनमेंट है — और फिर उस एनवायरनमेंट के पायथन के साथ main.py को चलाया। आपको कुछ भी मैन्युअल रूप से सक्रिय (activate) नहीं करना पड़ा।
uv add: पैकेज जोड़ना, और उसे दर्ज करना
एआई इंजीनियर जिस प्रोजेक्ट पर भी काम करता है, वह लगभग हमेशा किसी API को कॉल करता है, इसलिए पहला पैकेज HTTP क्लाइंट httpx है, साथ ही .env फ़ाइलें पढ़ने के लिए python-dotenv:
uv add httpx python-dotenv
Resolved 9 packages in 119ms
Installed 8 packages in 92ms
+ anyio==4.15.1
+ certifi==2026.7.22
+ h11==0.16.0
+ httpcore==1.0.9
+ httpx==0.28.1
+ idna==3.20
+ python-dotenv==1.2.3
+ typing-extensions==4.16.0आपने दो पैकेज मांगे थे और आठ मिले — बाकी httpx की अपनी आंतरिक डिपेंडेंसीज़ हैं, जिनका हिसाब uv ने खुद लगाया। जब आप इसे करेंगे तो वर्ज़न संख्याएँ नई हो सकती हैं।
अब pyproject.toml देखें:
[project]
name = "hello-ai"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"httpx>=0.28.1",
"python-dotenv>=1.2.3",
]एक ही कमांड ने तीन काम किए: पैकेज .venv में इंस्टॉल हो गए, pyproject.toml में दर्ज हो गया कि प्रोजेक्ट को इनकी ज़रूरत है, और uv.lock नामक एक नई फ़ाइल बन गई, जिसने सभी आठ पैकेजों के सटीक वर्ज़न को लॉक कर दिया। लॉकफ़ाइलों पर बाद में विस्तार से चर्चा होगी; अभी के लिए इतना जानना काफी है कि जो भी सहकर्मी इस रिपॉजिटरी को क्लोन करेगा और uv sync चलाएगा, उसे ठीक यही आठ वर्ज़न्स मिलेंगे।
किसी पैकेज को हटाने के लिए uv remove:
uv remove python-dotenv
Resolved 8 packages in 21ms
Uninstalled 1 package in 11ms
- python-dotenv==1.2.3यह भी दोनों जगह काम करता है: यह पैकेज को .venv से हटाता है और pyproject.toml से डिलीट कर देता है।
uv venv, और हाथ से सक्रिय करना
uv run आपके लिए एनवायरनमेंट बनाता और इस्तेमाल करता है, इसलिए इस कोर्स में यह लगभग हमेशा पर्याप्त होता है। लेकिन कभी-कभी आपको केवल एक खाली एनवायरनमेंट की ज़रूरत होती है — उदाहरण के लिए किसी पुराने प्रोजेक्ट में जिसमें अभी तक pyproject.toml नहीं है। तब:
uv venv --python 3.12
Using CPython 3.12.11
Creating virtual environment at: .venv
Activate with: .venv\Scriptsctivateअंतिम लाइन Windows PowerShell की है। यहाँ ऑपरेटिंग सिस्टम के अनुसार अंतर होता है:
# Windows (PowerShell)
.venv\Scriptsctivate
# macOS / Linux
source .venv/bin/activateएक बार सक्रिय होने पर, प्रॉम्प्ट की शुरुआत में (hello-ai) या (.venv) दिखाई देता है, और साधारण python कमांड उस एनवायरनमेंट के पायथन को चलाती है। बाहर निकलने के लिए deactivate टाइप करें। याद रखें कि uv run के साथ इनमें से किसी की भी ज़रूरत नहीं होती — यही इसका सबसे बड़ा फ़ायदा है, और टीम README में uv run लिखना सबसे सुरक्षित चुनाव है, क्योंकि इसमें "सक्रिय करना भूल गया" जैसी कोई स्थिति ही नहीं होती।
एडिटर को प्रोजेक्ट के पायथन से जोड़ना
प्रोग्राम टर्मिनल में चलता है, फिर भी एडिटर import httpx के नीचे एक लाल अंडरलाइन दिखाता है — इसका मतलब लगभग हमेशा यह होता है कि एडिटर किसी दूसरे पायथन को देख रहा है।
VS Code: Microsoft का Python एक्सटेंशन इंस्टॉल करें। फिर प्रोजेक्ट फ़ोल्डर खोलें, Ctrl + Shift + P (macOS पर Cmd + Shift + P) दबाएँ → Python: Select Interpreter चुनें → .venv के अंदर वाले पायथन का चयन करें। यदि यह सूची में नहीं है, तो Enter interpreter path का उपयोग करें और इसका पाथ दें: Windows पर .venv\Scripts\python.exe, macOS/Linux पर .venv/bin/python।
PyCharm: Settings → Project → Python Interpreter → Add Interpreter → Add Local Interpreter → किसी मौजूदा एनवायरनमेंट को चुनें और वही पाथ दें। हाल के वर्ज़न्स सीधे uv एनवायरनमेंट प्रकार भी प्रदान करते हैं।
यह पक्का करने का सबसे आसान तरीका कि एडिटर किस पायथन का उपयोग कर रहा है, एडिटर के बिल्ट-इन टर्मिनल में इसे चलाना है:
import sys
print(sys.executable)पाथ आपके प्रोजेक्ट के .venv के अंदर समाप्त होना चाहिए — उदाहरण के लिए ...\hello-ai\.venv\Scripts\python.exe। पाथ की शुरुआत आपके फ़ोल्डर पर निर्भर करती है।
एक संपूर्ण उदाहरण
hello-ai प्रोजेक्ट में env_check.py नामक एक फ़ाइल बनाएँ। यह एक छोटी "एनवायरनमेंट जाँच" स्क्रिप्ट है — जब कोई नया व्यक्ति किसी टीम में शामिल होता है, तो सबसे पहले ऐसी स्क्रिप्ट चलाने से पुष्टि हो जाती है कि सब कुछ सही जगह पर है:
import sys
from importlib.metadata import version
from pathlib import Path
def main() -> None:
in_venv = sys.prefix != sys.base_prefix
print(f"Python : {sys.version_info.major}.{sys.version_info.minor}")
print(f"In a venv : {in_venv}")
print(f"Env folder : {Path(sys.prefix).name}")
import httpx # installed with `uv add httpx`
print(f"httpx : {version('httpx')}")
print(f"Client ready: {httpx.Client is not None}")
print("Hello, AI engineer.")
if __name__ == "__main__":
main()इसे प्रोजेक्ट के अंदर से चलाएं:
uv run env_check.pyPython : 3.12
In a venv : True
Env folder : .venv
httpx : 0.28.1
Client ready: True
Hello, AI engineer.अब इसी फ़ाइल को एक खाली एनवायरनमेंट में चलाकर देखते हैं। फ़ाइल को किसी अन्य फ़ोल्डर में कॉपी किया गया, वहाँ uv venv --python 3.12 से एक नया एनवायरनमेंट बनाया गया, और फ़ाइल को सीधे उस एनवायरनमेंट के पायथन से चलाया गया (Windows पर .venv\Scripts\python env_check.py, macOS/Linux पर .venv/bin/python env_check.py):
Python : 3.12
In a venv : True
Env folder : .venv
Traceback (most recent call last):
File "env_check.py", line 20, in <module>
main()
File "env_check.py", line 12, in main
import httpx # installed with `uv add httpx`
^^^^^^^^^^^^
ModuleNotFoundError: No module named 'httpx'इस स्क्रिप्ट के कुछ महत्वपूर्ण निर्णयों को समझना ज़रूरी है:
sys.prefix != sys.base_prefix — पायथन खुद जानता है कि वह वर्चुअल एनवायरनमेंट में चल रहा है या नहीं। sys.base_prefix वह आधारभूत पायथन है जिससे एनवायरनमेंट बनाया गया था, और sys.prefix वह है जो अभी चल रहा है। यदि दोनों अलग हैं, तो आप एनवायरनमेंट के अंदर हैं।
फ़ोल्डर का नाम, पूरा पाथ नहीं — Path(sys.prefix).name केवल अंतिम भाग .venv प्रिंट करता है। पूरा पाथ हर मशीन पर अलग होता है; नाम सबके लिए समान रहता है। जाँच स्क्रिप्ट का आउटपुट जितना कम मशीन-विशिष्ट होगा, टीम चैट में उसकी तुलना करना उतना ही आसान होगा।
फ़ंक्शन के बीच में import httpx — सामान्यतः इम्पोर्ट्स फ़ाइल के शीर्ष पर होते हैं, और होने भी चाहिए। यहाँ इसे जानबूझकर बीच में रखा गया है ताकि किसी खाली एनवायरनमेंट में एरर आने से पहले पहली तीन पंक्तियाँ प्रिंट हो जाएँ। आउटपुट अपनी कहानी खुद बताता है: पायथन 3.12 ठीक है, एनवायरनमेंट सक्रिय है, लेकिन उस एनवायरनमेंट में httpx नहीं है। इसका समाधान uv add httpx है — या, यदि प्रोजेक्ट के pyproject.toml में यह पहले से सूचीबद्ध है, तो uv sync।
version('httpx') — किसी पैकेज का वर्ज़न पढ़ने का मानक तरीका importlib.metadata है। प्रत्येक पैकेज में __version__ नहीं होता, लेकिन प्रत्येक इंस्टॉल किए गए पैकेज में मेटाडेटा ज़रूर होता है।
जब यह काम न करे
The term 'uv' is not recognized as the name of a cmdlet... (macOS/Linux पर uv: command not found) uv इंस्टॉल है, लेकिन आपने जिस टर्मिनल में टाइप किया है वह इंस्टॉलेशन से पहले खोला गया था, इसलिए उसे नया PATH नहीं पता। टर्मिनल (और VS Code में पूरा एडिटर) बंद करके दोबारा खोलें।
error: No pyproject.toml found in current directory or any parent directory आपने किसी प्रोजेक्ट फ़ोल्डर के बाहर uv add चलाया। uv add प्रोजेक्ट की फ़ाइल में लिखता है, इसलिए प्रोजेक्ट न होने पर लिखने की कोई जगह नहीं होती। प्रोजेक्ट में cd करें, या नया होने पर पहले uv init चलाएं।
ModuleNotFoundError: No module named 'httpx' स्क्रिप्ट को चलाने वाले पायथन के पास यह पैकेज नहीं है। दो सामान्य कारण: पैकेज को कभी uv add से जोड़ा नहीं गया था, या स्क्रिप्ट को uv run के बजाय सामान्य python से चलाया गया था, जिससे प्रोजेक्ट के एनवायरनमेंट के बजाय सिस्टम पायथन चल गया। इसे uv run env_check.py से चलाएं।
error: Failed to spawn: hello.py और Caused by: program not found आपने uv run को ऐसी फ़ाइल का नाम दिया जो वर्तमान फ़ोल्डर में नहीं है — आमतौर पर स्पेलिंग की ग़लती, या आप ग़लत फ़ोल्डर में हैं। फ़ाइल न मिलने पर uv उस नाम के किसी प्रोग्राम को खोजने लगा।
× No solution found when resolving dependencies और Because htpx was not found... पैकेज के नाम में टाइपो (htpx)। अच्छी बात यह है कि विफल uv add से कुछ नहीं बदलता — pyproject.toml और uv.lock सुरक्षित रहते हैं। नाम सही करें और दोबारा चलाएं।
.venv\Scriptsctivate : File ... cannot be loaded because running scripts is disabled PowerShell की सुरक्षा नीति। एक बार Set-ExecutionPolicy -Scope CurrentUser RemoteSigned चलाएँ और नया टर्मिनल खोलें — या एक्टिवेशन छोड़ें और सब कुछ uv run से चलाएँ।
चरण 4 / 6 — अनुमान
अपनी समझ की जाँच करें
This file is saved as check.py in the hello-ai project and run with uv run check.py. What prints?
import sys
print(sys.prefix != sys.base_prefix)
print(sys.version_info.major)- A`.venv`, then `3.12`
- B`True`, then `3`
- C`True`, then `12`
- D`False`, then `3`
The project's pyproject.toml lists httpx, and uv.lock is in the repository. Still, a new colleague following the README on a brand-new laptop gets ModuleNotFoundError: No module named 'httpx'. Where is the bug in the README?
# README of a team project, "How to run" section:
# 1. git clone <repo-url>
# 2. cd summarizer
# 3. python main.py
import httpx
print("client:", httpx.Client.__name__)- AA step running `uv init` after the clone is missing
- BThe colleague must first run `uv add httpx`, then `python main.py`
- CThe `import httpx` line must move from the top of the file into a `main()` function
- DStep 3 runs the system Python; it should say `uv run main.py`, which builds `.venv` from `pyproject.toml` and `uv.lock` and runs inside it
After uv init and uv add, the project has pyproject.toml, uv.lock, .python-version and .venv. Which of these go into the team's Git repository?
- AEverything except `.python-version`, since the Python version is a personal choice
- B`pyproject.toml`, `uv.lock` and `.python-version` go in; `.venv` does not
- CAll four, including `.venv`, so colleagues do not have to install anything
- DOnly `pyproject.toml`; `uv.lock` is generated, so leave it out too
प्ले प्रो का हिस्सा है
+30 XP इंतज़ार में
प्रो के साथ यह अध्याय खेलें
पढ़ना मुफ़्त है, और पूरा अध्याय खुला है। हर मुफ़्त कोर्स के पहले 5 अध्याय मुफ़्त में खेले जा सकते हैं। अध्याय 6 से प्रश्नों के उत्तर देना, XP कमाना और स्ट्रीक बढ़ाना प्रो का हिस्सा है।
प्रो से प्ले अनलॉक करेंआपकी बारी
अपनी मशीन पर uv और पायथन 3.12 तैयार होने के बाद, एक नया प्रोजेक्ट बनाएँ:
uv init my-first-agent --python 3.12से प्रोजेक्ट बनाएँ, औरuv add httpxसे एक पैकेज जोड़ें- ऊपर दी गई
env_check.pyफ़ाइल को प्रोजेक्ट में बिल्कुल वैसे ही लिखें, औरuv run env_check.pyसे चलाएं pyproject.tomlखोलें और देखें किhttpxdependenciesके तहत सूचीबद्ध है, और प्रोजेक्ट मेंuv.lockफ़ाइल बन गई है- प्रोजेक्ट को VS Code या PyCharm में खोलें और प्रोजेक्ट के
.venvको इंटरप्रेटर के रूप में चुनें, ताकिimport httpxलाइन पर कोई लाल रेखा न दिखे
अपेक्षित आउटपुट (जब आप ऐसा करेंगे तो httpx वर्ज़न नया हो सकता है):
Python : 3.12
In a venv : True
Env folder : .venv
httpx : 0.28.1
Client ready: True
Hello, AI engineer.फिर इसे जानबूझकर तोड़ें: uv remove httpx चलाएँ और uv run env_check.py को दोबारा चलाएँ। नोट करें कि यह कहाँ तक प्रिंट होता है, कौन सा एरर आता है, और pyproject.toml में क्या बदलता है। फिर इसे uv add httpx से ठीक करें। यह ब्रेक-एंड-रिपेयर चक्र दो मिनट लेता है, लेकिन आपकी पहली नौकरी के पहले हफ़्ते में यही आपका सबसे ज़्यादा समय बचाएगा।
चरण 6 / 6
चुनौती — अध्याय की क्विज़
सरल से कठिन — दस प्रश्न, अंतिम वाले जानबूझकर चुनौतीपूर्ण बनाए गए हैं।
प्रो के साथ खेलें