Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The Issue about :CondaChangeEnv #43

Open
accuracy-maker opened this issue May 15, 2023 · 20 comments
Open

The Issue about :CondaChangeEnv #43

accuracy-maker opened this issue May 15, 2023 · 20 comments

Comments

@accuracy-maker
Copy link

Thanks for you greate work. But I have a problem when I write the configuration file of nvim.
My computer is Mac OS M1
My config file is :
call plug#begin()

Plug 'octol/vim-cpp-enhanced-highlight'

" 安装和启用插件
" vim-conda:用于集成 Anaconda
Plug 'cjrh/vim-conda'
let g:python3_host_prog = expand("/Users/gaohaitao/opt/anaconda3/envs/pytorch/bin/python")

let g:conda_python3_executable = expand("/Users/gaohaitao/opt/anaconda3/envs/traffic/bin/python")

let g:conda_executable = expand('/Users/gaohaitao/opt/anaconda3/bin/conda')

" 设置CondaChangeEnv命令为自动加载
augroup conda_autogroup
autocmd!
autocmd VimEnter * CondaChangeEnv
augroup END

call plug#end()
But appear the ERROR:
处理 VimEnter 自动命令 "*"..function 8_CondaChangeEnv[2]..provider#python3#Call 时发生错误:
第 18 行:
Error invoking 'python_execute' on channel 3 (python3-script-host):
Traceback (most recent call last):
File "", line 1, in
File "/Users/gaohaitao/.local/share/nvim/plugged/vim-conda/plugin/vimconda.py", line 361, in conda_change_env
envs = get_envs()
File "/Users/gaohaitao/.local/share/nvim/plugged/vim-conda/plugin/vimconda.py", line 187, in get_envs
envs = get_conda_info_dict()["envs"]
File "/Users/gaohaitao/.local/share/nvim/plugged/vim-conda/plugin/vimconda.py", line 242, in get_conda_info_dict
output = vim_conda_runshell(conda_exe + " info --json")
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

I have tried a lot of methods but they didn't work. Could you help me?

@ubaldot
Copy link
Collaborator

ubaldot commented May 15, 2023

I am not sure what is that problem, but I would start by removing this part

let g:python3_host_prog = expand("/Users/gaohaitao/opt/anaconda3/envs/pytorch/bin/python")
let g:conda_python3_executable = expand("/Users/gaohaitao/opt/anaconda3/envs/traffic/bin/python")
let g:conda_executable = expand('/Users/gaohaitao/opt/anaconda3/bin/conda')

" 设置CondaChangeEnv命令为自动加载
augroup conda_autogroup
autocmd!
autocmd VimEnter * CondaChangeEnv
augroup END

from the section delimited by the call plug#begin() and call plug#end().
Well, I would completely remove these definitions and I would instead include the following in my .vimrc

    &pythonthreehome = fnamemodify(trim(system("which python")), ":h:h")
    &pythonthreedll = trim(system("which python"))

I would then run :echo has('python3') that should return 1 and then :python3 print('Hello World!') that should return Hello World!

@accuracy-maker
Copy link
Author

Thanks for your help, but I still get confused. Because I have a lot of virtual envs in Anaconda, in order to make command "CondaChangeEnv" work, what types of pathroot should I use? base or env I created?

@ubaldot
Copy link
Collaborator

ubaldot commented May 15, 2023

What is the output :CondaChangeEnv after you tried the solution I proposed?

@accuracy-maker
Copy link
Author

Actually I am newplayer of shell and vim, I write the config file in ~/.config/nvim/init.vim, Did the solution you proposed mean this way?

call plug#begin()

Plug 'octol/vim-cpp-enhanced-highlight'

Plug 'cjrh/vim-conda'
&pythonthreehome = fnamemodify(trim(system("which python")), ":h:h")
&pythonthreedll = trim(system("which python"))

call plug#end()

@ubaldot
Copy link
Collaborator

ubaldot commented May 15, 2023

No worries, we have been all beginners :)

I dare to give you a small suggestion given your beginner state: earning vim takes LOT of time (at some point you will ask yourself if that was worth) and many of the information you need you can find in the :help user-manual. I heavily suggest you to read that BEFORE you try to guess how things work with trial and error approach because vim is everything but intuitive. You'll see how things will unfold much more easily. ;-)

Back to the problem, what I meant is this:

&pythonthreehome = fnamemodify(trim(system("which python")), ":h:h")
&pythonthreedll = trim(system("which python"))

call plug#begin()
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'cjrh/vim-conda'
call plug#end()

Next, run the command I wrote above and let us know the outcome.

@accuracy-maker
Copy link
Author

when I rewrite the config file in ~/.config/nvim/init.vim, like this:
`&pythonthreehome = fnamemodify(trim(system("which python")), ":h:h")
&pythonthreedll = trim(system("which python"))

call plug#begin()
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'cjrh/vim-conda'
call plug#end()`

when I recommnad <sudo nvim ~/.config/nvim/init.vim>, there's an error:
Processing/Users/gaohaitao/config/nvim/init. If the error occurs when vim: Line 1: E33: Does not have the previous replacement regular expression Line 2: E33: Does not have the previous replacement regular expression Press ENTER or another command to continue

Then, I check this command , I do have a python env in </Users/gaohaitao/opt/anaconda3/bin/python>
But When I input ":CondaChangeEnv", the editor show this:
E492: Not editor command: CondaChangeEnv

it seems that the config file didn't work. I still have a question:"Whether the functions of the config files vimrc and init.vim are the same"

@ubaldot
Copy link
Collaborator

ubaldot commented May 15, 2023

  1. Why you use sudo?
  2. my bad, I use vim9 (not neovim) and the syntax for setting options is different

I am not sure but you need let. Try with the following:

let &pythonthreehome = fnamemodify(trim(system("which python")), ":h:h")
let &pythonthreedll = trim(system("which python"))
  1. I don't know the mechanism of nvim, but I suggest you to write the lines I gave you to .vimrc.

Check also the other commands I gave you.
For troubleshooting you could also check :messages just after startup.

@accuracy-maker
Copy link
Author

I'll try your solution. It is embrassed for me that i need to take some time. When I finish them, I'll give you feedback. Thank for your help very much!!!

@ubaldot
Copy link
Collaborator

ubaldot commented May 15, 2023

Don't be embarassed. It takes time for everyone. It is actually when you rush that things won't work and frustrate you. ;-) Good luck!

@accuracy-maker
Copy link
Author

Hi, I uninstall the neovim and use vim. Surprisingly, I find that my computer has two types of vim -- one is installed by homebrew, the other is installed initially by Mac. And the init vim dosn't support python3. Then I aliase the vim to homebrew version and support the python3 finally.

I write the config file in ~/.vimrc like this:
image
it seems that the config file didn't work
image

the good news is when I input py3 print("hello world"), this command can work

@ubaldot
Copy link
Collaborator

ubaldot commented May 15, 2023

It is normal, macosx is shipped with vim by default, but that is not super good since it misses lots of features.
Also, even if you install Vim through homebrew, terminal.app does not supports colorschemes very well. In that case you may think to install another terminal app like kitty or iterm2.

Otherwise, consider Macvim. ;-)
Don't forget to carefully read :h macvim for setting your terminal if you go that route.

Or, if you want to revert back to neovim to use stuff like telescope, treesitter, etc, check with neovim folks how to set :h options. In this case the options that you want to set are pythonthrehome and pythonthreedll.

@accuracy-maker
Copy link
Author

Thanks for your help, I really excited that I succeed just now. I summarize two points that maybe helpful to other beginners.

  • Check out your vim version and test if python3 is supported
  • Remember to install pyvim. pip install pyvim in your base root of anaconda3
    Then your vim-conda works.
    image
    image
    Finally, thank ubaldot again. You are really a nice person!

@ubaldot
Copy link
Collaborator

ubaldot commented May 15, 2023

No worries :)

Just a final note: I have no idea what pyvim is, but it is not a good idea to install stuff in the base environment.

@accuracy-maker
Copy link
Author

ok, if I have the better solution, I'll leave another message

@jiaqiwang969
Copy link

@ubaldot
Copy link
Collaborator

ubaldot commented May 25, 2023

https://github.com/ubaldot/vim-conda-activate
thus may help?

Thanks for the mention but that is an undergoing work. It has a major bug that perhaps it is solved by setting the sys.path but I have to figure out how in vimscript.
Or perhaps it will never been solved 🤣.
Well, if you have any clue feel free to add a PR 😄

@ubaldot
Copy link
Collaborator

ubaldot commented May 25, 2023

Ok, I found some time and I completed the plugin.

https://github.com/ubaldot/vim-conda-activate

Being very new, it may contain bugs. I have tested only on OSX, but I am confident that it should work on other OS:s as well.

Thanks to @cjrh that paved the way! :)

@accuracy-maker
Copy link
Author

oh, great work, I'll willing to test it in my win laptop.

@cjrh
Copy link
Owner

cjrh commented May 27, 2023

Hi @ubaldot vim-conda-activate looks great! If you would like to add a PR here to mention it in my README, that would perfectly fine by me. I haven't made meaningful changes in vim-conda for many years so it's good that you have continued the work 👍🏼

I'll add you as a collaborator on vim-conda. nvm you already are :)

@ubaldot
Copy link
Collaborator

ubaldot commented May 28, 2023

Ok, I'll fix that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants