xdh*_*ore 14 python pylint visual-studio-code tensorflow pylance
我有一个 python 导入,可以在从 VS Code 终端运行时运行,但 VS Code 的编辑器会发出警告。此外,“转到定义”不起作用。
我从图像创建了一个 docker 容器tensorflow/tensorflow:1.15.2-py3,然后使用 VS Code 的“远程容器”扩展附加到它。然后我在容器中创建了以下文件。
主要.py:
import tensorflow.compat.v1 as tf
print(tf.__version__)
Run Code Online (Sandbox Code Playgroud)
这在 VS Code 终端中运行良好,但编辑器和问题窗格都向我发出unresolved import 'tensorflow.compat'警告。此外,“转到定义”不适用于tf.__version__.
我正在使用多个扩展,但我相信相关的扩展是 Microsoft Python 扩展(安装在容器中),以及 Remote - Containers 扩展,现在是 Pylance 扩展(安装在容器中)。
我已经用默认值尝试过了pylint,然后在安装后也pylance得到了类似的结果。我还看过一些有关类似问题的文档,但它们与为项目一部分的模块设置正确的源文件夹位置有关。相反,我的项目中的代码似乎可以很好地处理导入/转到定义。这是外部库似乎不起作用。
另外,为了这个最小的示例,我已以 root 身份附加到容器,因此我猜测这不是提升权限的问题。
我还尝试禁用除以下扩展之外的所有扩展,但得到了相同的结果:
上面的所有扩展都是最新版本。
我也摆弄了设置python.autocomplete.extraPaths,但我不确定正确的路径是什么。必须将库添加到全局 python 安装中安装的路径似乎也是错误的,特别是因为我没有使用虚拟环境(它位于 docker 容器等中)。
如何修复 VS Code 以便它识别此导入,并且我可以使用“转到定义”来探索这些张量流函数/类/等?
TensorFlow 以 pylint 和 pylance 无法识别的方式定义其某些模块。这些错误并不一定表示设置不正确。
x运行来找到help(x))。因为在我的例子中别名的目标是内部名称,所以您可能不想将这些更改签入源代码管理。不理想。关于 linting:tensorflow 似乎以工具无法理解的方式定义其模块。此外,该包似乎是另一个包的某种别名。例如:
import tensorflow.compat.v1 as tf
tf.estimator.RunConfig()
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了 pylint 警告并破坏了智能感知。但是,如果您在 REPL 中手动导入上述内容并运行help(tf),它会显示以下包,您可以使用它:
import tensorflow_core._api.v1.compat.v1 as tf
tf.estimator.RunConfig()
Run Code Online (Sandbox Code Playgroud)
第二个示例不会导致 pylint 警告。此外,智能感知功能(转到定义、Ctrl+单击等)也适用于第二个示例。
然而,基于_api,看起来第二个包名称是一个内部命名空间,所以我猜测最好只使用这个内部名称进行本地调试。
我遇到了同样的问题,但有各种软件包。我的解决方案是转到 VSCode 设置并搜索"python.analysis.extraPaths",然后添加站点包的路径。
就我而言,我添加了C:\Code\Python39\Lib\site-packages,现在工作正常。
| 归档时间: |
|
| 查看次数: |
29633 次 |
| 最近记录: |