neovim / pynvim

Python client and plugin host for Nvim
http://pynvim.readthedocs.io/en/latest/
Apache License 2.0
1.51k stars 118 forks source link

python3 unable to load neovim Python module #470

Closed chenle02 closed 3 years ago

chenle02 commented 3 years ago

Hi all,

I have been struggling for this issue for a while. My system is Ubuntu 20.04. I have installed pynvim and neovim:

pip2 install pynvim
pip2 install neovim
pip3 install pynvim
pip3 install pynivm

or

/usr/bin/python3 -m pip install pynvim
/usr/bin/python3 -m pip install neovim

I also tried to uninstall and reinstall them multiple times with no vail. When I run

nvim -u NORC -c ':checkhealth'

I always get error messages from python3 part, such as the following:

## Python 2 provider (optional)
  - INFO: `g:python_host_prog` is not set.  Searching for python2 in the environment.
  - INFO: Multiple python2 executables found.  Set `g:python_host_prog` to avoid surprises.
  - INFO: Executable: /usr/local/bin/python2
  - INFO: Other python executable: /usr/bin/python2
  - INFO: Other python executable: /bin/python2
  - INFO: Python version: 2.7.18
  - INFO: pynvim version: 0.4.2
  - OK: Latest pynvim is installed.

## Python 3 provider (optional)
  - 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/local/bin/python3
  - INFO: Other python executable: /home/lechen/anaconda3/bin/python3
  - INFO: Other python executable: /usr/bin/python3
  - INFO: Other python executable: /bin/python3
  - ERROR: Command error (job=9, exit code 1): `'/usr/local/bin/python3' -c 'import sys; sys.path.remove(""); import neovim; print(neovim.__file__)'` (in '/home/lechen')
    Output: Traceback (most recent call last):  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py", line 20, in <module>    import asyncio  File "/usr/lib/python3.8/asyncio/__init__.py", line 8, in <module>    from .base_events import *  File "/usr/lib/python3.8/asyncio/base_events.py", line 18, in <module>    import concurrent.futures  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py", line 8, in <module>    from concurrent.futures._base import (FIRST_COMPLETED,  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 414    raise exception_type, self._exception, self._traceback                        ^SyntaxError: invalid syntaxDuring handling of the above exception, another exception occurred:Traceback (most recent call last):  File "<string>", line 1, in <module>  File "/home/lechen/.local/lib/python2.7/site-packages/neovim/__init__.py", line 5, in <module>    import pynvim  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/__init__.py", line 11, in <module>    from pynvim.msgpack_rpc import (ErrorResponse, child_session, socket_session,  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.py", line 8, in <module>    from pynvim.msgpack_rpc.event_loop import EventLoop  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.py", line 10, in <module>    from pynvim.msgpack_rpc.event_loop.asyncio import AsyncioEventLoop  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py", line 23, in <module>    import trollius as asyncio  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/__init__.py", line 21, in <module>    from .base_events import *  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/base_events.py", line 39, in <module>    from . import coroutines  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/coroutines.py", line 16, in <module>    from . import futures  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/futures.py", line 19, in <module>    from . import executor  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/executor.py", line 12, in <module>    import concurrent.futures  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py", line 8, in <module>    from concurrent.futures._base import (FIRST_COMPLETED,  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 414    raise exception_type, self._exception, self._traceback                        ^SyntaxError: invalid syntax
    Stderr: Traceback (most recent call last):  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py", line 20, in <module>    import asyncio  File "/usr/lib/python3.8/asyncio/__init__.py", line 8, in <module>    from .base_events import *  File "/usr/lib/python3.8/asyncio/base_events.py", line 18, in <module>    import concurrent.futures  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py", line 8, in <module>    from concurrent.futures._base import (FIRST_COMPLETED,  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 414    raise exception_type, self._exception, self._traceback                        ^SyntaxError: invalid syntaxDuring handling of the above exception, another exception occurred:Traceback (most recent call last):  File "<string>", line 1, in <module>  File "/home/lechen/.local/lib/python2.7/site-packages/neovim/__init__.py", line 5, in <module>    import pynvim  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/__init__.py", line 11, in <module>    from pynvim.msgpack_rpc import (ErrorResponse, child_session, socket_session,  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.py", line 8, in <module>    from pynvim.msgpack_rpc.event_loop import EventLoop  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.py", line 10, in <module>    from pynvim.msgpack_rpc.event_loop.asyncio import AsyncioEventLoop  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py", line 23, in <module>    import trollius as asyncio  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/__init__.py", line 21, in <module>    from .base_events import *  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/base_events.py", line 39, in <module>    from . import coroutines  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/coroutines.py", line 16, in <module>    from . import futures  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/futures.py", line 19, in <module>    from . import executor  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/executor.py", line 12, in <module>    import concurrent.futures  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py", line 8, in <module>    from concurrent.futures._base import (FIRST_COMPLETED,  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 414    raise exception_type, self._exception, self._traceback                        ^SyntaxError: invalid syntax
  - INFO: Python version: 3.8.5
  - INFO: pynvim version: unable to load neovim Python module
  - ERROR: pynvim is not installed.
    Error: unable to load neovim Python module
    - ADVICE:
      - Run in shell: pip3 install pynvim

Here are some outputs from my python3:

base ❯ python3 -c "import neovim"
Traceback (most recent call last):
  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py", line 20, in <module>
    import asyncio
  File "/usr/lib/python3.8/asyncio/__init__.py", line 8, in <module>
    from .base_events import *
  File "/usr/lib/python3.8/asyncio/base_events.py", line 18, in <module>
    import concurrent.futures
  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py", line 8, in <module>
    from concurrent.futures._base import (FIRST_COMPLETED,
  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 414
    raise exception_type, self._exception, self._traceback
                        ^
SyntaxError: invalid syntax

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/lechen/.local/lib/python2.7/site-packages/neovim/__init__.py", line 5, in <module>
    import pynvim
  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/__init__.py", line 11, in <module>
    from pynvim.msgpack_rpc import (ErrorResponse, child_session, socket_session,
  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/__init__.py", line 8, in <module>
    from pynvim.msgpack_rpc.event_loop import EventLoop
  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/__init__.py", line 10, in <module>
    from pynvim.msgpack_rpc.event_loop.asyncio import AsyncioEventLoop
  File "/home/lechen/.local/lib/python2.7/site-packages/pynvim/msgpack_rpc/event_loop/asyncio.py", line 23, in <module>
    import trollius as asyncio
  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/__init__.py", line 21, in <module>
    from .base_events import *
  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/base_events.py", line 39, in <module>
    from . import coroutines
  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/coroutines.py", line 16, in <module>
    from . import futures
  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/futures.py", line 19, in <module>
    from . import executor
  File "/home/lechen/.local/lib/python3.8/site-packages/trollius/executor.py", line 12, in <module>
    import concurrent.futures
  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/__init__.py", line 8, in <module>
    from concurrent.futures._base import (FIRST_COMPLETED,
  File "/home/lechen/.local/lib/python2.7/site-packages/concurrent/futures/_base.py", line 414
    raise exception_type, self._exception, self._traceback
                        ^
SyntaxError: invalid syntax

I have tried various things from googing, such as issues-388. All failed.

In my init.vim, I set the python's as follows

let g:python_host_prog = '/usr/bin/python2'
let g:python3_host_prog = '/usr/bin/python3'

I also have installed anaconda, I tried that one too with no success.

Thanks a lot for any help!

ghost commented 2 years ago

how was this issue resolved?

what was the fix?

Shougo commented 2 years ago

@defnlife You need to check :checkhealth. I think your Python is not detected by neovim. So you need to set g:python3_host_prog.