Shougo / denite.nvim

:dragon: Dark powered asynchronous unite all interfaces for Neovim/Vim8
Other
2.06k stars 215 forks source link

UpgradeRemotePlugins fails on latest neovim-git #541

Closed tcoopman closed 5 years ago

tcoopman commented 5 years ago

I've just upgrade to neovim-git and UpgradeRemotePlugins doesn't work anymore.

Problems summary

I get this error on running UpgradeRemotePlugins

Encountered TypeError loading plugin at /home/thomas/.local/share/nvim/plugged/denite.nvim/rplugin/python3/denite: cannot unpack non-iterable ModuleSpec object
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/pynvim/plugin/host.py", line 134, in _load
    file, pathname, descr = find_module(name, [directory])
TypeError: cannot unpack non-iterable ModuleSpec object
remote/host: python3 host registered plugins []
remote/host: generated rplugin manifest: /home/thomas/.local/share/nvim/rplugin.vim
Press ENTER or type command to continue

Expected

It should still work

Environment Information (Required!)

Features: +acl +iconv +jemalloc +tui See ":help feature-compile"

system vimrc file: "$VIM/sysinit.vim" fall-back for $VIM: "/usr/share/nvim"

 * `:checkhealth` or `:CheckHealth` result(neovim only):

health#LanguageClient#check

health#nvim#check

Configuration

Performance

Remote Plugins

terminal

tmux

health#provider#check

Clipboard (optional)

Python 2 provider (optional)

Python 3 provider (optional)

Ruby provider (optional)

Node.js provider (optional)

Provide a minimal init.vim with less than 50 lines (Required!)

" Your minimal init.vim
set runtimepath+=~/path/to/denite.nvim/

How to reproduce problems from neovim startup (Required!)

  1. Installed latest git version of neovim and latest python3-neovim
  2. Install denite.nvim with Plug
  3. Run UpgradeRemotePlugins
dmix commented 5 years ago

This is happening to me on OSX with homebrew install neovim 0.3.1 (also when I use brew install --HEAD neovim)

my python versions:

~ ➤ python --version
Python 2.7.15 ~ ➤ python3 --version
Python 3.7.1

And yes neovim was install with both pip and pip3

dmix commented 5 years ago

Downgrading to Python 3.6.5_1 from 3.7.1 fixed this problem for me. It's probably connected to this:

https://github.com/Shougo/denite.nvim/issues/529

> brew uninstall --ignore-dependencies python3         
> brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb 
> pip3 install --upgrade pip neovim   
Shougo commented 5 years ago

Downgrading to Python 3.6.5_1 from 3.7.1 fixed this problem for me. It's probably connected to this:

529

No. Because the feature is not implemented yet.

Shougo commented 5 years ago

I have Python3.7.1 but I don't reproduce the behavior.

Please upload the real minimal init.vim if not I will close the issue.

Shougo commented 5 years ago

I have tested it with the minimal vimrc and it works.

set rtp+=~/work/denite.nvim
Shougo commented 5 years ago

NVIM v0.3.2-908-g016ebb418

Old. Please use the latest version.

Shougo commented 5 years ago

@tcoopman @dmix Please read the issue.

https://github.com/ncm2/ncm2/pull/102

You must uninstall neovim and pynvim module from Python and reinstall pynvim module.

Shougo commented 5 years ago

This is happening to me on OSX with homebrew install neovim 0.3.1 (also when I use brew install --HEAD neovim)

Unfortunately, you should build neovim from source manually.

Shougo commented 5 years ago
  - INFO: `g:python3_host_prog` is not set.  Searching for python3 in the environment.
  - INFO: Multiple python3 executables found.  Set `g:python3_host_prog` to avoid surprises.
  - INFO: Executable: /usr/bin/python3
  - INFO: Other python executable: /bin/python3

It seems danger. You should use g:python3_host_prog.

Shougo commented 5 years ago

I think your pynvim module is not compatible with neovim. Because your neovim is old.

If you use the latest pynvim, you must use the latest neovim.

ornicar commented 5 years ago

I have the same issue. Shougo, you are doing us all an immense service by supporting denite. It's an invaluable tool, and a fantastic gift to the neovim community. I'm sorry you're getting so much unpaid support work on your plate, most of which is not even related to denite. Including probably this:

Problem summary

I've just upgraded neovim, pynvim and denite to latest master.

Since then, when running :UpdateRemotePlugins:

Encountered TypeError loading plugin at /home/thib/denite.nvim/rplugin/python3/denite: cannot unpack non-iterable ModuleSpec object
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/pynvim/plugin/host.py", line 134, in _load
    file, pathname, descr = find_module(name, [directory])
TypeError: cannot unpack non-iterable ModuleSpec object
remote/host: python3 host registered plugins []
remote/host: generated rplugin manifest: /home/thib/.local/share/nvim/rplugin.vim

Environment

OS: ArchLinux neovim: latest master

NVIM v0.3.2-923-g271c5df41
Build type: RelWithDebInfo
LuaJIT 2.0.5
Compilation: /usr/bin/cc -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -Wconversion -O2 -g -DMIN_LOG_LEVEL=3 -Og -g -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fdiagnostics-color=auto -Wno-array-bounds -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/tmp/yaourt-tmp-thib/aur-neovim-git/src/neovim-git/build/config -I/tmp/yaourt-tmp-thib/aur-neovim-git/src/neovim-git/src -I/usr/include -I/tmp/yaourt-tmp-thib/aur-neovim-git/src/neovim-git/build/src/nvim/auto -I/tmp/yaourt-tmp-thib/aur-neovim-git/src/neovim-git/build/include
Compiled by thib@bogota

Features: +acl +iconv +jemalloc +tui

denite: latest master db2d7c307e70a4575baea3097e0977b59696e855 checkhealth:

health#nvim#check
========================================================================
## Configuration
  - OK: no issues found

## Performance
  - OK: Build type: RelWithDebInfo

## Remote Plugins
  - WARNING: "denite.nvim" is not registered.
  - WARNING: Out of date
    - ADVICE:
      - Run `:UpdateRemotePlugins`

## terminal
  - INFO: key_backspace (kbs) terminfo entry: key_backspace=^H
  - INFO: key_dc (kdch1) terminfo entry: key_dc=\E[3~
  - INFO: $COLORTERM='truecolor'

health#provider#check
========================================================================
## Clipboard (optional)
  - OK: Clipboard tool found: xsel

## Python 2 provider (optional)
  - INFO: `g:python_host_prog` is not set.  Searching for python2 in the environment.
  - INFO: Executable: /usr/bin/python2
  - INFO: Python version: 2.7.15
  - INFO: pynvim version: 0.3.1
  - OK: Latest pynvim is installed.

## Python 3 provider (optional)
  - INFO: `g:python3_host_prog` is not set.  Searching for python3 in the environment.
  - INFO: Executable: /usr/bin/python3
  - INFO: Python version: 3.7.1
  - INFO: pynvim version: 0.3.1
  - OK: Latest pynvim is installed.

## Ruby provider (optional)
  - INFO: Ruby: ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]
  - INFO: Host: /usr/bin/neovim-ruby-host
  - OK: Latest "neovim" gem is installed: 0.7.1

## Node.js provider (optional)
  - INFO: Node.js: v11.2.0
  - WARNING: Missing "neovim" npm (or yarn) package.
    - ADVICE:
      - Run in shell: npm install -g neovim
      - Run in shell (if you use yarn): yarn global add neovim

vimrc

set runtimepath+=~/denite.nvim/

Reproduce

nvim -u vimrc # using the one-liner vimrc above
:UpdateRemotePlugins

Note: I have the same issue with deoplete.

ornicar commented 5 years ago

OK I've been investigating this and made some progress. I think the issue comes from this pynvim commit from last week: https://github.com/neovim/pynvim/commit/a29f34e98e2b4d5ad8821bf5fd679cf7ba0a9b7d and more specifically

if sys.version_info >= (3, 4):
    from importlib.machinery import PathFinder
    original_find_module = PathFinder.find_spec
else:
    from imp import find_module as original_find_module

pynvim used to rely on imp import find_module as original_find_module, and this would work fine. But now instead it relies on original_find_module = PathFinder.find_spec and this breaks with cannot unpack non-iterable ModuleSpec object.

I shall file a bug on pynvim now.

Really Shougo I feel for you, getting all the bug reports that your code has nothing to do with.

We love denite, we love deoplete, we love you <3 <3 <3 Keep on rocking

Shougo commented 5 years ago

I use NVim 0.3.2-5809.

NVIM v0.3.2-923-g271c5df41

Your version is not latest.

Shougo commented 5 years ago

I think your version of neovim is not compatible with the latest pynvim. Please test the latest neovim.

And Arch Linux's neovim package master is not the latest. I don't recommend for you to use it.

ornicar commented 5 years ago

I thought g271c5df41 referred to the latest neovim master commit 271c5df41603f5427540082a3f8790bca0fd7595 as seen on https://github.com/neovim/neovim https://i.imgur.com/SSNe6Gl.png

Thanks for your reply, I'll try a manual neovim build now instead of using the archlinux git- package.

Shougo commented 5 years ago

Hm.

https://github.com/neovim/pynvim/commit/a29f34e98e2b4d5ad8821bf5fd679cf7ba0a9b7d

The commit checks Python3.7, so it may break Python 3.7 environment. But why it is not reproduced in my Python 3.7 environment?

Shougo commented 5 years ago

It should be reported in https://github.com/neovim/pynvim/issues though.

ornicar commented 5 years ago

Yep that was the plan.

By the way I cloned and built neovim myself, and got the same version exactly:

./build/bin/nvim --version
NVIM v0.3.2-923-g271c5df41
Build type: Debug
[...]

I do think archlinux neovim-git package builds latest neovim master. Just FYI.

Shougo commented 5 years ago

I have re-build the neovim master. It works fine.

ornicar commented 5 years ago

A fix has landed on pynvim https://github.com/neovim/pynvim/commit/3efa4878464021f2c23b311f43a599318595177d

So I guess this issue can be closed now. Thank you all