How do I add a path to PYTHONPATH in virtualenv

PythonVirtualenv

Python 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.

  1. activate your virtualenv
  2. run python
  3. import sys and check sys.path
  4. you will find python search path there. Choose one of those (eg. site-packages)
  5. 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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFlavienView Question on Stackoverflow
Solution 1 - PythonDanicaView Answer on Stackoverflow
Solution 2 - PythoncrimeministerView Answer on Stackoverflow
Solution 3 - PythonSlavko-tView Answer on Stackoverflow
Solution 4 - PythonAneesh PanoliView Answer on Stackoverflow
Solution 5 - PythonRubber DuckView Answer on Stackoverflow
Solution 6 - PythonHajar RazipView Answer on Stackoverflow