Jedi-vim: Jedi-vim not use Conda environment

Created on 4 Feb 2019  ·  11Comments  ·  Source: davidhalter/jedi-vim

Issue

Jedi-vim knows python in my conda env, but not use it. Instead it just use the base conda environment.
However it does use python in environment created by venv module.

Previously it worked OK for all env created with venv or conda, I'm currently on the latest version of jedi-vim.

Steps to reproduce

I create a new environment with conda create -n pytorch python=3.7 and installed pytorch.
Jedi knows about the environment but does not use it, so I can not autocomplete it with deoplete.

Output of “:verbose JediDebugInfo”

#### Jedi-vim debug information

##### jedi-vim version

 - jedi-vim git version: f367497
 - jedi git submodule status:  bd1010bbd2693f189ff780eb21fc4294071cb280 pythonx/jedi (v0.13.1)
 - parso git submodule status:  a2b153e3c13c41ead7682e6891a51ec20d58d9b1 pythonx/parso (v0.3.2)

##### Global Python

Using Python version 3 to access Jedi.
 - global sys.version: `3.7.2 (default, Dec 29 2018, 00:00:04), [Clang 4.0.1 (tags/RELEASE_401/final)]`
 - global site module: `/Users/phucle/miniconda3/lib/python3.7/site.py`

##### Jedi

 - path: `/Users/phucle/.local/share/nvim/plugged/jedi-vim/pythonx/jedi/jedi/__init__.py`
 - version: 0.13.1

##### Jedi environment: <SameEnvironment: 3.7.2 in /Users/phucle/miniconda3>

 - executable: /Users/phucle/miniconda3/bin/python
 - sys_path:
    - `/Users/phucle/miniconda3/lib/python37.zip`
    - `/Users/phucle/miniconda3/lib/python3.7`
    - `/Users/phucle/miniconda3/lib/python3.7/lib-dynload`
    - `/Users/phucle/miniconda3/lib/python3.7/site-packages`

##### Known environments

 - <Environment: 3.7.2 in /Users/phucle/miniconda3/envs/pytorch> (/Users/phucle/miniconda3/envs/pytorch/bin/python3.7) ==>> This should be the executable of jedi-vim.
 - <Environment: 2.7.15 in /usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7> (/usr/local/opt/python@2/bin/python2.7)

Create env with venv

If I create a new environment using python -m venv myenv, jedi recognize and use the environment:

#### Jedi-vim debug information

##### jedi-vim version

 - jedi-vim git version: f367497
 - jedi git submodule status:  bd1010bbd2693f189ff780eb21fc4294071cb280 pythonx/jedi (v0.13.1)
 - parso git submodule status:  a2b153e3c13c41ead7682e6891a51ec20d58d9b1 pythonx/parso (v0.3.2)

##### Global Python

Using Python version 3 to access Jedi.
 - global sys.version: `3.7.2 (default, Dec 29 2018, 00:00:04), [Clang 4.0.1 (tags/RELEASE_401/final)]`
 - global site module: `/Users/phucle/miniconda3/lib/python3.7/site.py`

##### Jedi

 - path: `/Users/phucle/.local/share/nvim/plugged/jedi-vim/pythonx/jedi/jedi/__init__.py`
 - version: 0.13.1

##### Jedi environment: <Environment: 3.7.2 in /Users/phucle/github/venv>

 - executable: /Users/phucle/github/venv/bin/python
 - sys_path:
    - `/Users/phucle/miniconda3/lib/python37.zip`
    - `/Users/phucle/miniconda3/lib/python3.7`
    - `/Users/phucle/miniconda3/lib/python3.7/lib-dynload`
    - `/Users/phucle/github/venv/lib/python3.7/site-packages`

##### Known environments

 - <Environment: 3.7.2 in /Users/phucle/github/venv> (/Users/phucle/github/venv/bin/python)
 - <Environment: 3.7.2 in /Users/phucle/miniconda3> (/Users/phucle/miniconda3/bin/python3.7)
 - <Environment: 2.7.15 in /usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7> (/usr/local/opt/python@2/bin/python2.7)

##### Settings

Most helpful comment

Just wanted to confirm that this solution worked for me too, for getting Jedi to use my active conda environment. I added to my .vimrc:

let $VIRTUAL_ENV = $CONDA_PREFIX

But it seems like this should be handled by jedi

All 11 comments

I did a check. From this commit onward (https://github.com/davidhalter/jedi-vim/commit/2a43448f3bbcd4fed07db2c223f054e6e4b1a4ec) jedi doesn't use my activated conda-env as executable any more.

Prior to this commit, jedi-vim use my activated conda-env as executable, but if no conda-env is activated (using root conda env), jedi-vim does not recognize the root conda-env.

Apparently Jedi only check environment in $VIRTUAL_ENV, so my solution for now is:
export VIRTUAL_ENV=$CONDA_PREFIX

Is $CONDA_PREFIX similar to $VIRTUAL_ENV in this regard?

The environment var of conda is not well documented, but it appears to be the case here.

[I] ✘130 ➜ conda deactivate
[N] ➜ echo $CONDA_PREFIX
/Users/phucle/miniconda3
[I] ➜ conda activate pytorch
[N] ➜ echo $CONDA_PREFIX
/Users/phucle/miniconda3/envs/pytorch

This project use $CONDA_PREFIX to find virtual environment in addition to $VIRTUAL_ENV: https://github.com/ContinuumIO/intake/commit/73be37e2f86ffcc5f9a91cd4e81658c8550d1427#diff-cad0d0e903d312c7329edb300804bf4cR54
This comment too: https://github.com/conda/conda/issues/2764#issuecomment-339860431

Just wanted to confirm that this solution worked for me too, for getting Jedi to use my active conda environment. I added to my .vimrc:

let $VIRTUAL_ENV = $CONDA_PREFIX

But it seems like this should be handled by jedi

If it helps you guys, I'm happy to discuss a pull request in Jedi that does this. It's probably pretty easy to do. Essentially it's another if.

Here's an example, @roxma did this already for a Jedi fork: https://github.com/ncm2/ncm2-jedi/pull/20/files (@roxma or @shanest it would be nice if you guys could test this on Jedi master and PR this).

Thanks; I'll take a look at this and make a PR soon!

Would be great if this could be fixed.

Does pull request 1440 work for you? That fixed this issue for me :)

https://github.com/davidhalter/jedi/pull/1440

Sorry I don't use conda anymore.

Thank you very much, it fixed my issue.

Was this page helpful?
0 / 5 - 0 ratings