Free lesson · GenAI Agent Engineering

તમારા agent ના Python environment ને અલગ કરો

તમે agent project માટે Python virtual environment બનાવી શકો છો અને system Python થી dependency isolation સાબિત કરી શકો છો.

Course: GenAI Agent Engineering · Chapter 1 · The Dev Environment

Free to read — no subscription required.

પરિચય

જ્યારે તમે એક એજન્ટ પ્રોજેક્ટ માટે langgraph ઇન્સ્ટોલ કરો છો અને બીજા માટે openai અપગ્રેડ કરો છો, ત્યારે ગ્લોબલી ઇન્સ્ટોલ થયેલું Python દરેક બદલાવને સિક્કો ઉછાળવા જેવું બનાવી દે છે: આજે કયો પ્રોજેક્ટ તૂટશે? એજન્ટ સ્ટેક્સ વારંવાર બ્રેકિંગ રિલીઝ આપે છે — LangChain 0.1 થી 0.3, OpenAI SDK 0.x થી 1.x, Anthropic SDK ફીચર ડ્રોપ્સ — અને આઇસોલેશન વગર એક જ pip install બીજા પ્રોજેક્ટના પગ નીચેથી ચૂપચાપ વર્ઝન બદલી શકે છે, જેનાથી "મારા લેપટોપ પર ચાલે છે, CI માં ફેલ થાય છે" જેવા અટકાવ સર્જાય છે જે દરેક ઘટનામાં કલાકોનો ખર્ચ કરે છે.

આ પાઠના અંતે તમે venv વડે પ્રતિ-પ્રોજેક્ટ Python વર્ચ્યુઅલ એન્વાયર્નમેન્ટ બનાવી શકશો, તેને Unix/macOS અથવા Windows પર એક્ટિવેટ કરી શકશો, sys.executable વડે આઇસોલેશન ચકાસી શકશો, અને Poetry નો ઉપયોગ કરીને pyproject.toml માં ડિપેન્ડન્સી ડિક્લેર કરી શકશો તથા તેમને poetry.lock માં પિન કરી શકશો જેથી દરેક ટીમમેટ અને CI રન સમાન વર્ઝન ઇન્સ્ટોલ કરે.

મુખ્ય પરિભાષા

  • વર્ચ્યુઅલ એન્વાયર્નમેન્ટ — એક આઇસોલેટેડ ડિરેક્ટરી (સામાન્ય રીતે .venv/) જેમાં પોતાનું Python ઇન્ટરપ્રિટર અને site-packages હોય છે; તેને એક્ટિવેટ કરવાથી તે ઇન્ટરપ્રિટર PATH માં પહેલા સ્થાને આવે છે જેથી પેકેજ ઇન્સ્ટોલ એક પ્રોજેક્ટ સુધી જ સ્થાનિક રહે. તેના વગર, એજન્ટ SDK અપગ્રેડ પ્રોજેક્ટ્સ વચ્ચે અથડાય છે.
  • pyproject.toml — એક જ ડિક્લેરેટિવ ફાઇલ જે તમારા પ્રોજેક્ટનો મેટાડેટા અને ડિપેન્ડન્સી રેન્જ (દા.ત. langgraph = "^0.2.0") દર્શાવે છે. આ એ ફાઇલ છે જેને માણસો એડિટ કરે છે અને જેને Poetry વર્ઝન રિઝોલ્વ કરવા માટે વાંચે છે.
  • poetry.lock — એક ઓટો-જનરેટેડ ફાઇલ જે દરેક ડાયરેક્ટ અને ટ્રાન્ઝિટિવ ડિપેન્ડન્સીના ચોક્કસ રિઝોલ્વ થયેલા વર્ઝન પિન કરે છે. git માં કમિટ થયેલી, તે એ કરાર છે જે ખાતરી આપે છે કે poetry install દરેક મશીન પર સમાન ટ્રી બનાવે.
  • ડિપેન્ડન્સી ગ્રુપ — pyproject.toml માં ડિપેન્ડન્સીનો લેબલ કરેલો સબસેટ (દા.ત. group.dev, group.test) જે ફક્ત સ્પષ્ટ રીતે માંગવામાં આવે ત્યારે જ ઇન્સ્ટોલ થાય છે, જેથી પ્રોડક્શન ઇમેજ ટેસ્ટ અથવા લિન્ટ ટૂલિંગથી મુક્ત રહે.
  • ટ્રાન્ઝિટિવ ડિપેન્ડન્સી — એક પેકેજ જે એટલા માટે ખેંચાઈ આવે છે કારણ કે તમે માંગેલી કોઈ વસ્તુ તેના પર નિર્ભર છે (દા.ત. httpx openai મારફતે આવે છે). લોક ફાઇલ ચોક્કસ એટલા માટે મહત્ત્વની છે કારણ કે આ જ એ વર્ઝન છે જે ધ્યાન બહાર સૌથી વધુ ખસી જવાની શક્યતા ધરાવે છે.

વિભાવનાઓ

એજન્ટ પ્રોજેક્ટ્સ માટે આઇસોલેશન ડિફોલ્ટ કેમ છે

એજન્ટ કોડબેઝ ઝડપથી બદલાતા સ્ટેક્સ ખેંચી લાવે છે: langchain-core, langgraph, openai, anthropic, ઉપરાંત pydantic જેવી મોડેલ-સાઇડ લાઇબ્રેરીઓ જે અલગ અલગ SDK દ્વારા બે દિશામાં ખેંચાય છે. ગ્લોબલી ઇન્સ્ટોલ કરવાનો અર્થ એ છે કે મશીન પરના દરેક પ્રોજેક્ટ માટે સૌથી છેલ્લું ઇન્સ્ટોલ જીતે છે. વર્ચ્યુઅલ એન્વાયર્નમેન્ટ દરેક પ્રોજેક્ટને પોતાનું site-packages આપે છે જેથી વર્ઝન પિન એક ડિરેક્ટરી અને એક PATH ફેરફાર સુધી સીમિત રહે, સમગ્ર યુઝર એકાઉન્ટ સુધી નહીં.

Loading diagram...

એક્ટિવેશન એ ફક્ત PATH માં આગળ ઉમેરણ અને શેલ પ્રોમ્પ્ટમાં બદલાવ છે — તેમાં કોઈ કર્નલ જાદુ નથી. એકવાર .venv/bin PATH માં પહેલા સ્થાને આવી જાય, પછી python, pip, અને કોઈપણ કન્સોલ-સ્ક્રિપ્ટ એન્ટ્રી પોઇન્ટ આઇસોલેટેડ કોપી તરફ રિઝોલ્વ થાય છે. ડિએક્ટિવેટ કરવાથી મૂળ PATH પુનઃસ્થાપિત થાય છે.

venv થી Poetry સુધી: ડિક્લેરેટિવ ડિપેન્ડન્સી અને લોકિંગ

venv આઇસોલેશનનો ઉકેલ આપે છે પણ પુનઃઉત્પાદનક્ષમતાનો નહીં — આજે pip install openai કાલે અલગ વર્ઝન લાવી શકે છે. Poetry તેની ઉપર બે બાબતો ઉમેરે છે: pyproject.toml તમે સ્વીકારો છો તે વર્ઝન રેન્જ (^1.40.0) ડિક્લેર કરે છે, અને poetry.lock એ ચોક્કસ વર્ઝન નોંધે છે જેણે તમે છેલ્લે રિઝોલ્વ કર્યું ત્યારે તે રેન્જ સંતોષી હતી. CI અને ટીમમેટ્સ poetry install ચલાવે છે અને સમાન ટ્રી મેળવે છે (જુઓ કોડ વૉકથ્રૂ).

Loading diagram...

ડિપેન્ડન્સી ગ્રુપ (group.dev, group.test) તમને pytest, mypy, અને ruff ને પ્રોડક્શન ઇન્સ્ટોલથી બહાર રાખવા દે છે અને તેમ છતાં સોર્સ કંટ્રોલમાં તેમને ટ્રૅક કરવા દે છે.

કોડ વૉકથ્રૂ

પહેલું સ્નિપેટ શરૂઆતથી એક આઇસોલેટેડ venv બનાવે છે અને ચકાસે છે — કોઈપણ pip install પહેલાં જરૂરી લઘુતમ બાબત. બીજું એ જ પ્રોજેક્ટને Poetry પર માઇગ્રેટ કરે છે જેથી ડિપેન્ડન્સી સેટ ડિક્લેરેટિવ બને અને રિઝોલ્વ થયેલા વર્ઝન લોક થાય.

Code snippetbash
1# 1. Create and activate an isolated environment in the project root. 2python -m venv .venv 3source .venv/bin/activate # Unix/macOS 4# .venv\Scripts\Activate.ps1 # Windows PowerShell 5 6# 2. Confirm PATH now points at the isolated interpreter, not the system one. 7python -c "import sys, site; print(sys.executable); print(site.getsitepackages())" 8# Expected: paths beginning with the absolute path to .venv/ 9 10# 3. Install agent SDKs only into this venv. 11pip install --upgrade pip 12pip install "openai>=1.40,<2" "anthropic>=0.34,<1" "langgraph>=0.2,<0.3" 13 14# 4. Leave the environment cleanly when you're done. 15deactivate
Code snippettoml
1# pyproject.toml — declarative replacement for ad-hoc pip installs. 2[tool.poetry] 3name = "my-agent" 4version = "0.1.0" 5description = "Production AI agent" 6 7[tool.poetry.dependencies] 8python = "^3.11" 9openai = "^1.40.0" 10anthropic = "^0.34.0" 11langgraph = "^0.2.0" 12 13[tool.poetry.group.dev.dependencies] 14pytest = "^8.0.0" 15ruff = "^0.6.0" 16 17[build-system] 18requires = ["poetry-core"] 19build-backend = "poetry.core.masonry.api"

pyproject.toml સેવ કર્યા પછી, એકવાર poetry config virtualenvs.in-project true ચલાવો, પછી poetry install — Poetry .venv/ બનાવે છે, રેન્જ રિઝોલ્વ કરે છે, અને poetry.lock લખે છે. બંને ફાઇલો કમિટ કરો (git add pyproject.toml poetry.lock) જેથી CI અને ટીમમેટ્સ ચોક્કસ એ જ ટ્રી પુનઃઉત્પન્ન કરે.

તમે જાણશો કે તે કામ કરે છે જ્યારે python -c "import sys; print(sys.executable)" (અથવા poetry run python -c ...) તમારા પ્રોજેક્ટના .venv/ અંદરનો પાથ પ્રિન્ટ કરે, pip list ફક્ત તમે ઇન્સ્ટોલ કરેલા SDK જ દર્શાવે (તમારા મશીનના ગ્લોબલ પેકેજ નહીં), અને બીજા મશીન પર તાજું poetry install poetry.lock માં સૂચિબદ્ધ સમાન વર્ઝન ઉત્પન્ન કરે.

શિસ્ત-વિષયક ઉપયોગ

કરવા જેવું અને ન કરવા જેવું

કરવા જેવું

  1. પહેલા pip install પહેલાં દરેક નવા એજન્ટ પ્રોજેક્ટમાં .venv/ બનાવો — એકવાર પ્રોજેક્ટની પહેલી ડિપેન્ડન્સી ગ્લોબલ ઇન્ટરપ્રિટરમાં પહોંચી જાય, પછી તેને ઉકેલવું સ્વચ્છ શરૂઆત કરવા કરતાં ઘણું વધુ ખર્ચાળ બને છે.
  2. pyproject.toml અને poetry.lock બંને કમિટ કરો — લોક ફાઇલ જ "મારા મશીન પર ચાલે છે" ને ટીમમેટના મશીન પર અને CI માં પુનઃઉત્પાદનક્ષમ બનાવે છે.
  3. pytest, mypy, અને ruff ને group.dev માં મૂકો — પ્રોડક્શન ઇમેજ નાની રહે છે અને અસંબંધિત ટૂલ અપગ્રેડ રનટાઇમ રિઝોલ્યુશન તોડી શકતા નથી.

ન કરવા જેવું

  1. "ફક્ત એક ઝડપી ટેસ્ટ માટે" સિસ્ટમ Python માં pip install ન કરો — ઝડપી ટેસ્ટ જ એજન્ટ SDK સંઘર્ષો દાખલ થવાનો રસ્તો છે; હંમેશા પહેલા venv એક્ટિવેટ કરો.
  2. poetry.lock હાથથી એડિટ ન કરો — તેને poetry lock અથવા poetry add વડે પુનઃજનરેટ કરો; મેન્યુઅલ એડિટ રેન્જને પિન કરેલા વર્ઝનથી અસંગત બનાવે છે અને પુનઃઉત્પાદનક્ષમતાને ચૂપચાપ તોડે છે.
  3. .venv/ કમિટ ન કરો — તેને gitignore કરો — venv મશીન-વિશિષ્ટ અને મોટું હોય છે; વર્ઝન કંટ્રોલમાં ફક્ત pyproject.toml અને poetry.lock જ હોવા જોઈએ.

A hands-on lab comes with this lesson — real code, in a cloud IDE. Create a free account to run it. No card.

Free account · no card · straight to the lab

Or get the full path — from

Listen to this lesson

Audio overviews of this lesson's labs and its chapter, from GenBodha Bytes.

More free lessons in GenAI Agent Engineering

All free lessons in GenAI Agent Engineering →