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?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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. libpython2.7site-packages, with the absolute path to the directory containing your package as its only contents.
Method 2
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 …
Method 3
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.
Method 4
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
Method 5
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.
Method 6
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.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0