[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24464: 25.1; python.el virtualenv
From: |
Justin Timmons |
Subject: |
bug#24464: 25.1; python.el virtualenv |
Date: |
Sun, 11 Dec 2016 19:39:56 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
It looks like this was caused by an incorrect assumption on the
directory structure of the virtualenv directory. According to the
virtualenv docs only POSIX systems follow the structure
"/path/to/venv/bin/", while windows systems use "/path/to/venv/Scripts"
for the location of the binary files, most importantly including the
python interpreter (see:
https://virtualenv.pypa.io/en/stable/userguide/#windows-notes).
This meant that the wrong path was added to `exec-path` and so we were
starting the python shell installed on the system, rather than the one
bundled inside of the virtualenv.
This should be addressed in the attached patch file - it just adds a
special case for Windows and prepends that path to the system PATH.
I also updated the docs for the `python-shell-calculate-exec-path`
function to make it more clear that using the python interpreter bundled
in the virtualenv will automatically set the PYTHONPATH to point at the
libraries inside of the virtualenv - something that was not immediately
obvious to me.
Steps to verify that patch is working correctly:
1. (On Windows)
2. Create virtualenv (eg. 'virtualenv ~/venv')
3. Install a library NOT currently installed on the your system inside
the virtualenv. ex:
~/venv/Scripts/activate.bat
pip install sphinx
deactivate.bat
4. Start emacs
5. Set `python-shell-virtualenv-root` to the root directory of your
virtualenv (eg. "/home/jtimmons/venv")
6. M-x run-python
7. Make sure that you can import the library installed in the
virtualenv in step 3 (eg. 'import sphinx')
venv.diff
Description: A patch to fix Windows venv usage in python shells
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#24464: 25.1; python.el virtualenv,
Justin Timmons <=