我已经安装了 Google Cloud SDK 并希望我正在编写的代码通过 pylint。不幸的是,任何时候我从谷歌导入任何东西。*我收到一个错误:
E: 10, 0: No name 'cloud' in module 'path/to/my/current/module.google' (no-name-in-module)
E: 10, 0: Unable to import 'google.cloud' (import-error)
版本:
$: pylint --version
pylint 1.7.0,
astroid 1.5.0
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4]
如果我在 pylint 中放置一个钩子以打印出 sys 路径,我将没有什么有趣的。google-cloud-sdk 在里面,/usr/local/lib/python2.7/dist-packages
所以它应该能够找到它。
['/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages/pylint-1.7.0-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/backports.functools_lru_cache-1.3-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/configparser-3.5.0-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/singledispatch-3.4.0.3-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/editdistance-0.3.1-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/mccabe-0.6.1-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/astroid-1.5.0-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/wrapt-1.10.10-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/lazy_object_proxy-1.2.2-py2.7-linux-x86_64.egg', '/usr/lib/python2.7/dist-packages']
有谁知道它为什么在我的本地路径中查找“google”模块以及如何修复它?
更新有关我的环境的更多详细信息:
有问题的 Google Cloud SDK 模块位于:
/usr/local/lib/python2.7/dist-packages/google
如果我ls
在那个目录中显示:
api auth cloud gapic gax iam ...
如果我遵循这些路径,所有模块都在我希望它们被赋予导入语句的地方。
但是,没有__init__.py
文件,这让我觉得他们正在使用隐式命名空间包。所以这里的相关问题似乎是:如何让 pylint 识别隐式命名空间包?文档说它应该“正常工作”:
https://docs.pylint.org/en/latest/user_guide/run.html?highlight=re
作为记录,使用 mypy 时出现了同样的问题。