# How to match Jupyter notebook environment in your local environment

**URL:** <https://community.deeplearning.ai/t/how-to-match-jupyter-notebook-environment-in-your-local-environment/845955>\
**Category:** ACP: Agent Communication Protocol\
**Created:** [July 5, 2025, 4:47pm UTC](https://community.deeplearning.ai/t/how-to-match-jupyter-notebook-environment-in-your-local-environment/845955 "2025-07-05T16:47:53Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dougdonohoe](https://avatars.discourse-cdn.com/v4/letter/d/c77e96/32.png) [@dougdonohoe](https://community.deeplearning.ai/u/dougdonohoe)\
**Post date:** [July 5, 2025, 4:47pm UTC](https://community.deeplearning.ai/t/how-to-match-jupyter-notebook-environment-in-your-local-environment/845955/1 "2025-07-05T16:47:53Z")

</div>

If you want to run code in a lesson locally, follow these instructions. This applies to any Python/Jupyter notebook-based course on DeepLearning.AI. This should be something they should explain in all courses.

Basically, Python is picky about versions. Some of these courses use 3.9 or 3.11 or something else. If you have the wrong version of Python, then some dependencies may not work. You have to make sure your local environment is using the same versions of everything.

Paste this into a new Jupyter notebook cell and run it; then follow the outputted  
instructions (an example is in a reply):

```auto
import subprocess
import sys

print("How to create a virtual environment to match this notebook:\n")

version = f"{sys.version_info.major}.{sys.version_info.minor}"
print(f"Install python version: {version}\n")
print(f" + On Mac: 'brew install python@{version}'")
print(f" + Other OS: ask your favorite AI or Google it.\n")

print(f"Run 'python{version} -m venv .venv' to create a new virtual environment.")
print("Run 'source .venv/bin/activate' to activate your virtual environment.\n")

print("Put these entries in a 'requirements.txt' file and run")
print(" 'pip install -r requirements.txt'.\n")
print("#=========== Begin requirements.txt ===========")
result = subprocess.run([sys.executable, '-m', 'pip', 'freeze'], capture_output=True, text=True)
print(result.stdout.strip())
print("#============ End requirements.txt ============")

```

With this `requirements.txt`, you should be able to run regular scripts as well as a local Jupyter notebook. I myself use IntelliJ (aka PyCharm) to run my notebooks.

---

<div class="post-metadata">

**Author:** ![dougdonohoe](https://avatars.discourse-cdn.com/v4/letter/d/c77e96/32.png) [@dougdonohoe](https://community.deeplearning.ai/u/dougdonohoe)\
**Post date:** [July 5, 2025, 4:49pm UTC](https://community.deeplearning.ai/t/how-to-match-jupyter-notebook-environment-in-your-local-environment/845955/2 "2025-07-05T16:49:16Z")

</div>

Here’s the output for the ACP: Agent Communication Protocol course (from Lesson 8):

```auto
How to create a virtual environment to match this notebook:

Install python version: 3.11

  + On Mac: 'brew install python@3.11'
  + Other OS: ask your favorite AI or Google it.

Run 'python3.11 -m venv .venv' to create a new virtual environment.
Run 'source .venv/bin/activate' to activate your virtual environment.

Put these entries in a 'requirements.txt' file and run
  'pip install -r requirements.txt'.

#=========== Begin requirements.txt ===========
acp-sdk==0.10.1
aiohappyeyeballs==2.6.1
aiohttp==3.12.12
aiosignal==1.3.2
alembic==1.16.1
annotated-types==0.7.0
anyio==4.9.0
appdirs==1.4.4
argon2-cffi==25.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asgiref==3.8.1
asttokens==3.0.0
async-lru==2.0.5
attrs==25.3.0
auth0-python==4.10.0
babel==2.17.0
backoff==2.2.1
bcrypt==4.3.0
beautifulsoup4==4.13.4
bleach==6.2.0
blinker==1.9.0
build==1.2.2.post1
cachetools==5.5.2
certifi==2025.4.26
cffi==1.17.1
charset-normalizer==3.4.2
chroma-hnswlib==0.7.6
chromadb==0.5.23
click==8.2.1
cohere==5.15.0
colorama==0.4.6
coloredlogs==15.0.1
comm==0.2.2
crewai==0.120.1
crewai-tools==0.45.0
cryptography==45.0.4
dataclasses-json==0.6.7
debugpy==1.8.14
decorator==5.2.1
defusedxml==0.7.1
deprecation==2.1.0
distro==1.9.0
dnspython==2.7.0
docker==7.1.0
docstring_parser==0.16
durationpy==0.10
email_validator==2.2.0
embedchain==0.1.128
et_xmlfile==2.0.0
executing==2.2.0
fastapi==0.115.12
fastapi-cli==0.0.7
fastavro==1.11.1
fastjsonschema==2.21.1
filelock==3.18.0
flatbuffers==25.2.10
fqdn==1.5.1
frozenlist==1.7.0
fsspec==2025.5.1
google-auth==2.40.3
googleapis-common-protos==1.70.0
gptcache==0.1.44
greenlet==3.2.3
grpcio==1.73.0
h11==0.16.0
h2==4.2.0
hf-xet==1.1.3
hpack==4.1.0
httpcore==1.0.9
httptools==0.6.4
httpx==0.28.1
httpx-sse==0.4.0
huggingface-hub==0.33.0
humanfriendly==10.0
hyperframe==6.1.0
idna==3.10
importlib_metadata==8.7.0
importlib_resources==6.5.2
instructor==1.8.3
ipykernel==6.29.5
ipython==9.3.0
ipython_pygments_lexers==1.1.1
ipywidgets==8.1.7
isoduration==20.11.0
janus==2.0.0
jedi==0.19.2
Jinja2==3.1.6
jiter==0.8.2
json5==0.12.0
json_repair==0.46.2
jsonpatch==1.33
jsonpickle==4.1.1
jsonpointer==3.0.0
jsonref==1.1.0
jsonschema==4.24.0
jsonschema-specifications==2025.4.1
jupyter==1.1.1
jupyter-console==6.6.3
jupyter-events==0.12.0
jupyter-lsp==2.2.5
jupyter_client==8.6.3
jupyter_core==5.8.1
jupyter_server==2.16.0
jupyter_server_terminals==0.4.4
jupyterlab==4.4.3
jupyterlab_pygments==0.3.0
jupyterlab_server==2.27.3
jupyterlab_widgets==3.0.15
kubernetes==33.1.0
lancedb==0.23.0
langchain==0.3.25
langchain-cohere==0.3.5
langchain-community==0.3.25
langchain-core==0.3.65
langchain-experimental==0.3.4
langchain-openai==0.2.14
langchain-text-splitters==0.3.8
langsmith==0.3.45
litellm==1.68.0
load-dotenv==0.1.0
Mako==1.3.10
markdown-it-py==3.0.0
MarkupSafe==3.0.2
marshmallow==3.26.1
matplotlib-inline==0.1.7
mdurl==0.1.2
mem0ai==0.1.107
mistune==3.1.3
mmh3==5.1.0
monotonic==1.6
mpmath==1.3.0
multidict==6.4.4
mypy_extensions==1.1.0
nbclient==0.10.2
nbconvert==7.16.6
nbformat==5.10.4
nest-asyncio==1.6.0
networkx==3.5
nodeenv==1.9.1
notebook==7.4.3
notebook_shim==0.2.4
numpy==2.3.0
oauthlib==3.2.2
onnxruntime==1.22.0
openai==1.75.0
openpyxl==3.1.5
opentelemetry-api==1.34.1
opentelemetry-exporter-otlp-proto-common==1.34.1
opentelemetry-exporter-otlp-proto-grpc==1.34.1
opentelemetry-exporter-otlp-proto-http==1.34.1
opentelemetry-instrumentation==0.55b1
opentelemetry-instrumentation-asgi==0.55b1
opentelemetry-instrumentation-fastapi==0.55b1
opentelemetry-instrumentation-httpx==0.55b1
opentelemetry-proto==1.34.1
opentelemetry-sdk==1.34.1
opentelemetry-semantic-conventions==0.55b1
opentelemetry-util-http==0.55b1
orjson==3.10.18
overrides==7.7.0
packaging==24.2
pandas==2.3.0
pandocfilters==1.5.1
parso==0.8.4
pdfminer.six==20250327
pdfplumber==0.11.6
pexpect==4.9.0
pillow==11.2.1
platformdirs==4.3.8
portalocker==2.10.1
posthog==3.25.0
prometheus_client==0.22.1
prompt_toolkit==3.0.51
propcache==0.3.2
protobuf==5.29.5
psutil==7.0.0
psycopg==3.2.9
psycopg-binary==3.2.9
ptyprocess==0.7.0
pure_eval==0.2.3
pyarrow==20.0.0
pyasn1==0.6.1
pyasn1_modules==0.4.2
pycparser==2.22
pydantic==2.11.5
pydantic-settings==2.9.1
pydantic_core==2.33.2
Pygments==2.19.1
PyJWT==2.10.1
pypdf==5.6.0
pypdfium2==4.30.1
PyPika==0.48.9
pyproject_hooks==1.2.0
pyright==1.1.402
pysbd==0.3.4
python-dateutil==2.9.0.post0
python-dotenv==1.1.0
python-json-logger==3.3.0
python-multipart==0.0.20
pytube==15.0.0
pytz==2025.2
pyvis==0.3.2
PyYAML==6.0.2
pyzmq==27.0.0
qdrant-client==1.14.2
redis==6.2.0
referencing==0.36.2
regex==2024.11.6
requests==2.32.4
requests-oauthlib==2.0.0
requests-toolbelt==1.0.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rich==13.9.4
rich-toolkit==0.14.7
rpds-py==0.25.1
rsa==4.9.1
schema==0.7.7
Send2Trash==1.8.3
shellingham==1.5.4
six==1.17.0
smolagents==1.18.0
sniffio==1.3.1
soupsieve==2.7
SQLAlchemy==2.0.41
stack-data==0.6.3
starlette==0.46.2
sympy==1.14.0
tabulate==0.9.0
tenacity==9.1.2
terminado==0.18.1
tiktoken==0.9.0
tinycss2==1.4.0
tokenizers==0.20.3
tomli==2.2.1
tomli_w==1.2.0
tornado==6.5.1
tqdm==4.67.1
traitlets==5.14.3
typer==0.16.0
types-python-dateutil==2.9.0.20250516
types-requests==2.32.4.20250611
typing-inspect==0.9.0
typing-inspection==0.4.1
typing_extensions==4.14.0
tzdata==2025.2
uri-template==1.3.0
urllib3==2.4.0
uv==0.7.12
uvicorn==0.34.3
uvloop==0.21.0
watchfiles==1.0.5
wcwidth==0.2.13
webcolors==24.11.1
webencodings==0.5.1
websocket-client==1.8.0
websockets==15.0.1
widgetsnbextension==4.0.14
wrapt==1.17.2
yarl==1.20.1
zipp==3.23.0
zstandard==0.23.0
#============ End requirements.txt ============

```

---

<div class="post-metadata">

**Author:** ![dougdonohoe](https://avatars.discourse-cdn.com/v4/letter/d/c77e96/32.png) [@dougdonohoe](https://community.deeplearning.ai/u/dougdonohoe)\
**Post date:** [July 6, 2025, 7:47pm UTC](https://community.deeplearning.ai/t/how-to-match-jupyter-notebook-environment-in-your-local-environment/845955/3 "2025-07-06T19:47:38Z")

</div>

Updated script which strips hard-coded `@ file:///` refs (seen when used in the **Open Source Models with Hugging Face** short course):

```auto
import subprocess
import sys

print("How to create a virtual environment to match this notebook:\n")

version = f"{sys.version_info.major}.{sys.version_info.minor}"
print(f"Install python version: {version}\n")
print(f" + On Mac: 'brew install python@{version}'")
print(f" + Other OS: ask your favorite AI or Google it.\n")

print(f"Run 'python{version} -m venv .venv' to create a new virtual environment.")
print("Run 'source .venv/bin/activate' to activate your virtual environment.\n")

print("Put these entries in a 'requirements.txt' file and run")
print(" 'pip install -r requirements.txt'.\n")
print("#=========== Begin requirements.txt ===========")
result = subprocess.run([sys.executable, '-m', 'pip', 'freeze'], capture_output=True, text=True)
lines = result.stdout.strip().split('\n')

clean_requirements = [] # strip out @ file:/// refs since won't be in your local env
for line in lines:
    if '@ file://' not in line and line.strip():
        clean_requirements.append(line)

print('\n'.join(clean_requirements))
print("#============ End requirements.txt ============")

```

**NOTE** : You may need to strip `+cpu` from packages like these (they were not found for me, on a Mac at least):

```auto
torch==2.2.0+cpu
torchvision==0.17.0+cpu

```

---

<div class="post-metadata">

**Author:** ![dougdonohoe](https://avatars.discourse-cdn.com/v4/letter/d/c77e96/32.png) [@dougdonohoe](https://community.deeplearning.ai/u/dougdonohoe)\
**Post date:** [July 6, 2025, 8:59pm UTC](https://community.deeplearning.ai/t/how-to-match-jupyter-notebook-environment-in-your-local-environment/845955/4 "2025-07-06T20:59:54Z")

</div>

I made a [gist](https://gist.github.com/dougdonohoe/4a19f9d4758d3b19d0b503de6bfcb5c3) of the script for easier sharing (it also strips `+cpu` from the torch packages).
