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.
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.
#### 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)
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
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 :)
Sorry I don't use conda anymore.
Thank you very much, it fixed my issue.
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