Alpace
Alpace

Reputation: 343

how to add the path to PYTHONPATH in google colab

how to execute the following command in google colab. export PYTHONPATH=/project/pylib/src:$PYTHONPATH

!export PYTHONPATH=/project/pylib/src:$PYTHONPATHit is not affect.

Upvotes: 24

Views: 37249

Answers (3)

Konstantinos Roditakis
Konstantinos Roditakis

Reputation: 605

In my colab session (tested on 8 June 2022)

!echo $PYTHONPATH

&

import os
os.environ['PYTHONPATH']

outputs /env/python


But

import sys
print(sys.path)

outputs

['', '/content', '/env/python', '/usr/lib/python37.zip', '/usr/lib/python3.7', 
'/usr/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages',
 '/usr/local/lib/python3.7/dist-packages/IPython/extensions', '/root/.ipython']

So, in scenarios where you perform !git clone https://github.com/some_user/some_repo.git

import sys
sys.path.insert(1, "/content/some_repo")

from some_package.utils import some_func #located in some_repo

will work rather than the first two options. I added /content/ because current working dir !pwd is /content/

Upvotes: 2

Nagabhushan S N
Nagabhushan S N

Reputation: 7277

Edit 2020-11-12

Using `%` instead of `!` retains any changes to all cells in the session. So, we can use that to set the environment variable `PYTHONPATH`. However, export doesn't work in colab. `%env` can be used to set the environment variable.
! echo $PYTHONPATH
%env PYTHONPATH="$/env/python:/content/gdrive/My Drive/Colab Notebooks/MNIST_Classifier/src"
! echo $PYTHONPATH

Output:

/env/python
/env/python:/content/gdrive/My Drive/Colab Notebooks/MNIST_Classifier/src

Initial Answer

The following worked for me
! echo $PYTHONPATH

import os
os.environ['PYTHONPATH'] += ":/content/gdrive/My Drive/Colab Notebooks/MNIST_Classifier/src"

! echo $PYTHONPATH

Output:

/env/python
/env/python:/content/gdrive/My Drive/Colab Notebooks/MNIST_Classifier/src

Sources:
https://medium.com/@omernaeem/you-can-set-environment-variables-using-os-environ-78a5181b6376
https://stackoverflow.com/a/49684719/3337089

Upvotes: 21

jakevdp
jakevdp

Reputation: 86443

The answer depends on why you want to do this.

For example, if you want to add the path to your current Python session so that Python's import mechanism finds modules located in that directory, you can do this:

import sys
sys.path.insert(1, "/project/pylib/src")

If you want to modify the environment variable itself (which won't affect the paths used in your current Python session) you can use the %set_env magic:

%set_env PYTHONPATH=/project/pylib/src:/env/python

Upvotes: 14

Related Questions