How do I add a path to PYTHONPATH in virtualenv
PythonVirtualenvPython Problem Overview
I am trying to add a path to the PYTHONPATH environment variable, that would be only visible from a particular virtualenv environment.
I tried SET PYTHONPATH=...
under a virtualenv command prompt, but that sets the variable for the whole environment.
How do I achieve that?
Python Solutions
Solution 1 - Python
You can usually avoid having to do anything with PYTHONPATH by using .pth
files. Just put a file with a .pth extension (any basename works) in your virtualenv's site-packages folder, e.g. lib\python2.7\site-packages
, with the absolute path to the directory containing your package as its only contents.
Solution 2 - Python
If you're using virtualenv
, you should probably also be using virtualenvwrapper, in which case you can use the add2virtualenv command to add paths to the Python path for the current virtualenv:
add2virtualenv directory1 directory2 …
Solution 3 - Python
You can also try to put symlink to one of your virtualenv.
eg.
- activate your virtualenv
- run python
- import sys and check sys.path
- you will find python search path there. Choose one of those (eg. site-packages)
- go there and create symlink to your package like: ln -s path-to-your-package name-with-which-you'll-be-importing
That way you should be able to import it even without activating your virtualenv. Simply try: path-to-your-virtualenv-folder/bin/python and import your package.
Solution 4 - Python
If you are using virtualenvwrapper,
$ cd to the parent folder
$ add2virtualenv folder_to_add
console will display
Warning: Converting "folder_to_add" to "/absoutle/path/to/folder_to_add"
That's it, and you should be good to go
Solution 5 - Python
import sys
import os
print(str(sys.path))
dir_path = os.path.dirname(os.path.realpath(__file__))
print("current working dir: %s" % dir_path)
sys.path.insert(0, dir_path)
I strongly suggest you use virtualenv and virtualenvwrapper to avoid cluttering the path.
Solution 6 - Python
As suggested by @crimeminister above, you can use virtualenvwrapper
then add2virtualenv
like suggested by @Aneesh Panoli. If add2virtualenv
is not working after pip install virtualenvwrapper
, then follow instructions in the top voted answer by @chirinosky here. Works for me.