我在Windows下,在python-mode 中打开lsp-bridge 会出现类似如下错误:
E:\Python39\python.exe .\testsubprocess.py
path: ['C:\Users\wcq\Desktop', 'E:\Python39\python39.zip', 'E:\Python39\DLLs', 'E:\Python39\lib', 'E:\Python39', 'E:\Python39\lib\site-packages', 'C:\Users\wcq\AppData\Roaming\npm']
Traceback (most recent call last):
File "C:\Users\wcq\Desktop\testsubprocess.py", line 20, in
subprocess.Popen(['pyright-langserver', '--stdio'], bufsize=DEFAULT_BUFFER_SIZE, stdin=PIPE, stdout=PIPE, stderr=stderr)
File "E:\Python39\lib\subprocess.py", line 951, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "E:\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
把
subprocess.Popen(['pyright-langserver', '--stdio'], bufsize=DEFAULT_BUFFER_SIZE, stdin=PIPE, stdout=PIPE, stderr=stderr)
改成
subprocess.Popen(['pyright-langserver', '--stdio'], bufsize=DEFAULT_BUFFER_SIZE, stdin=PIPE, stdout=PIPE, stderr=stderr, shell=True)
就好了, 我专门把这个函数放到一个单独的文件中, 分别在 cmd.exe , powershell, msys2, 还有emacs 安装路径下的 cmdproxy.exe 去跑这个文件, 无一例外都报错了。
我的环境:
Anaconda 安装的Python3.8
官网下载安装包安装的Python3.9
msys2 下 pacman 安装的Python3.9
npm 安装的pyright (npm -g install pyright)
想请教一下各位Windows大佬,有没有遇到过这样的问题? 是怎么解决的?