Calling IPython from a virtualenv
alias ipy="python -c 'import IPython; IPython.terminal.ipapp.launch_new_instance()'"
This is a great way of always being sure that the ipython instance always belongs to the virtualenv's python version.
This works only on ipython >2.0.
Source
Activate your virtual environment by using
source ~/.virtualenvs/my_venv/bin/activate
or by runningworkon my_venv
(Depending on how you've installed the my_venv virtual environment)Install ipython
pip install ipython
- Now run ipython from my_venv.
If it still loads the system's ipython, then run hash -r
in your shell
This will reset the cache of your shell and ensure you don't run another ipython that was already called in this shell session.
The answer given by @SiddharthaRT is good! Following this approach, it is simpler for me just:
python -m IPython
This will use the module IPython through the python bin, ensuring that it refers to the bin from the virtual env.
You can force IPython to use a virtual environment if available by adding file below to ~/.ipython/profile_default/startups
:
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
py_version = sys.version_info[:2] # formatted as X.Y
py_infix = os.path.join('lib', ('python%d.%d' % py_version))
virtual_site = os.path.join(os.environ.get('VIRTUAL_ENV'), py_infix, 'site-packages')
dist_site = os.path.join('/usr', py_infix, 'dist-packages')
# OPTIONAL: exclude debian-based system distributions sites
sys.path = filter(lambda p: not p.startswith(dist_site), sys.path)
# add virtualenv site
sys.path.insert(0, virtual_site)
I recommend naming it 00-virtualenv.py
so changes will be made as early as possible.
Note: Make sure ipython is installed in the new virtual environment to get this to work.