Visual Studio Code pylint:无法导入'protorpc'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio Code pylint:无法导入'protorpc'相关的知识,希望对你有一定的参考价值。
我在pylint中使用Visual Studio Code来开发Google App Engine(GAE)Cloud Endpoint API in Python。我无法解决lint错误。我不知道是什么导致错误,但在猜测,pylint找不到protorpc
库?
Troubleshooting Linting中的建议修复是将工作空间设置配置为指向完全限定的python可执行文件。我已经这样做了,但皮棉错误仍然存在。
protorpc
本身安装到:
~/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0/protorpc
...这包含无法导入的remote.py
模块:
__init__.py generate_python.py protojson.py transport.py
definition.py google_imports.py protourlencode.py util.py
descriptor.py message_types.py registry.py webapp
generate.py messages.py remote.py wsgi
generate_proto.py protobuf.py static
我已将此路径添加到$PYTHONPATH
(以及kitchen sink):
export GOOGLE_CLOUD_SDK=~/google-cloud-sdk
export APPENGINE_PATH=$GOOGLE_CLOUD_SDK/platform/google_appengine
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib/googlecloudsdk
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib/googlecloudsdk/api_lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/platform/google_appengine/lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/platform/google_appengine/lib/protorpc-1.0/protorpc
应用程序在本地运行,也在部署时运行,因此这似乎只是一个lint错误,但令人沮丧的是我无法解决它。
标准环境中的Python运行时包括Python标准库,App Engine库和一些捆绑的第三方软件包。
因此,我认为'App Engine库'包括protorpc
,但我不确定。此外,Adding the Cloud Endpoints Frameworks library to the sample API只需要将google-endpoints安装到应用程序的lib目录:
pip install -t lib google-endpoints --extra-index-url=https://gapi-pypi.appspot.com/admin/nurpc-dev --ignore-installed
我的观点是,我不认为我没有安装任何东西,我认为我在我的(网络)应用程序的lib目录中遗漏了任何东西。
打开Visual Studio代码(settings.json
)的设置文件,并将库路径添加到"python.autoComplete.extraPaths"
列表中。
"python.autoComplete.extraPaths": [
"~/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2",
"~/google-cloud-sdk/platform/google_appengine",
"~/google-cloud-sdk/lib",
"~/google-cloud-sdk/platform/google_appengine/lib/endpoints-1.0",
"~/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0"
],
改变库路径对我有用。击中Ctrl + Shift + P
并输入python interpreter
并选择其中一个显示的。一个人很熟悉(正如早前工作得很好的virtualenv所指出的那样)并且它起作用了。记下你正在使用的python版本,2.7或3.x并相应地选择
我遇到了同样的问题(VS Code)。由以下方法解决
1)从命令选项板中选择解释器命令(Ctrl + Shift + P)
2)搜索“选择解释器”
3)选择已安装的python目录
参考: - https://code.visualstudio.com/docs/python/environments#_select-an-environment
我没有玩过所有的可能性,但至少我觉得这可能是一个与python版本相关的问题。不知道为什么,我只相信自己的直觉。
因此我只是将pythonPath更改为python3(默认值:python):
"python.pythonPath": "python3"
我重新安装了依赖项(包括pylint !!!)
pip3 install <package> --user
...重启vs代码后,一切看起来都很好。
很多持久性
首先,我将检查它居住的python3
路径
然后在VS Code设置中添加该路径,例如:
"python.pythonPath": "/usr/local/bin/python3"
我通过将protorpc库添加到$PYTHONPATH
环境变量来解决这个问题。具体来说,我指向我的App Engine目录中安装的库:
export PYTHONPATH=$PYTHONPATH:/Users/jackwootton/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0
将此添加到~/.bash_profile
,重新启动我的机器和Visual Studio代码后,导入错误就消失了。
为了完整起见,我没有修改任何与Python相关的Visual Studio代码设置。完整的~/.bash_profile
文件:
export PATH=/Users/jackwootton/protoc3/bin:$PATH
export PYTHONPATH=/Users/jackwootton/google-cloud-sdk/platform/google_appengine
export PYTHONPATH=$PYTHONPATH:/Users/jackwootton/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0
# The next line updates PATH for the Google Cloud SDK.
if [ -f '/Users/jackwootton/google-cloud-sdk/path.bash.inc' ]; then source '/Users/jackwootton/google-cloud-sdk/path.bash.inc'; fi
# The next line enables shell command completion for gcloud.
if [ -f '/Users/jackwootton/google-cloud-sdk/completion.bash.inc' ]; then source '/Users/jackwootton/google-cloud-sdk/completion.bash.inc'; fi
visual studio默认设置应与解释器路径相同。
Change VS code default setting: windows:文件>首选项>设置
"python.pythonPath": "C:\\Users\\Anaconda3\\pythonw.exe",
"workbench.startupEditor": "newUntitledFile"
找到合适的解释器:windows:Ctrl + Shift + P-> select interpreter:
该解释器的路径应与您正在处理的版本相同。
即使在确认我的虚拟环境中使用了正确的python
和pylint
后,我仍然遇到这些错误。
最后我发现在Visual Studio代码中我是A)打开我的项目目录,这是我的Python虚拟环境所在的B),但我是C)从更深层次的两个级别运行我的主要Python程序。这三件事需要同步才能完成所有工作。
这是我建议的:
- 在Visual Studio Code中,打开包含主Python程序的目录。 (这可能是也可能不是项目目录的顶层。)
- 选择终端菜单>新终端,直接在同一目录中创建虚拟环境。
python3 -m venv env
- 在虚拟环境中安装pylint。如果您在侧栏中选择任何Python文件,Visual Studio Code将提供为您执行此操作。或者,
source env/bin/activate
然后pip install pylint
。 - 在编辑器窗口的蓝色底部栏中,选择Python解释器
env/bin/python
。或者,转到“设置”并设置“Python:Python Path”。这在Settings.json中设置python.pythonPath
。
对于您的情况,将以下代码添加到vscode的settings.json
。
"python.linting.pylintArgs": [
"--init-hook='import sys; sys.path.append(\"~/google-cloud-sdk/platform/google_appengine/lib\")'"
]
对于那些遇到pip包问题的人,你可以选择
"python.linting.pylintArgs": [
"--init-hook='import sys; sys.path.append(\"/usr/local/lib/python3.7/dist-packages\")'"
]
你应该用你的python版本替换上面的python3.7
。
以上是关于Visual Studio Code pylint:无法导入'protorpc'的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Code pylint:无法导入'protorpc'
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
带有 PyLint 和 autoPep8 的 Visual Studio 代码:如何避免 PyLint 抱怨我的行长?
为啥 python Visual Studio 代码中没有显示 pylint 的错误曲线?
开发环境安装 Visual Studio Code 开发环境 ( 下载 Visual Studio Code 安装器 | Visual Studio Code )