python - 如何找出在Vim中导入python模块这个问题的原因和解决方案
问题描述
我正在尝试在 Vim 中设置 python,但我无法让它工作。它总是抛出一个名为 的异常UnicodeDecodeError
。
我已经在 Windows 10 上安装了 gvim。并且还安装了相应版本的 python 3。Vim 可以找到 python37.dll 和命令
:echo has('python3')
按预期返回 1。
我的带有 python 的 vim 仅在没有导入除内置模块之外的模块时工作。
例如:
:py3 print('a')
效果很好。
:py3 import vim
或者
:py3 import sys
也在工作。
但是,如果我像这样编写一个简单的 python 脚本 vim_test.py
print('This is for vim test')
然后尝试在 vim 中将其导入为
:py3 import vim_test
它会给出一个例外:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 963, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 906, in _find_spec
File "<frozen importlib._bootstrap_external>", line 1280, in find_spec
File "<frozen importlib._bootstrap_external>", line 1252, in _get_spec
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 9: invalid start byte
它不能在 Vim 中导入任何 python 模块。
但它可以直接运行这个脚本
:py3file vim_test.py
如果脚本文件 vim_test.py 在当前目录中。
这个问题的原因可能是什么?我该如何解决?我希望能够使用用 python 编写的 vim 插件。有了这个问题,我无法做到这一点。
解决方案
推荐阅读
- reactjs - 在顶层使用带有上下文 api 的 useSelector 挂钩以提高性能
- matlab - 如何改变点云中平面的位置?
- mongodb - MongoDB Mongoose 在日期范围内选择文档
- javascript - ajax数据表,无法检索数据
- jquery - 请求了不受支持的 HTTP 方法“OPTIONS”,而我设置为 HTTP 方法:“POST”
- laravel - Laravel 嵌套 Foreach 的常见问题视图试图获取非对象的属性
- java - 如何向洋葱服务器发送http请求?
- html - 布局菜单项,更改所选页面“项目”的样式
- prometheus-alertmanager - Alertmanager 中的指纹字段是否唯一?
- android - Ionic 4 与 Ionic 3 中的后台工作人员