gpt4 book ai didi

python - VS Code/Pylance/Pylint 无法解析导入

转载 作者:行者123 更新时间:2023-12-04 12:05:11 60 4
gpt4 key购买 nike

摘要
我有一个从 VS Code 终端运行时可以工作的 python 导入,但是 VS Code 的编辑器给出了警告。此外,“转到定义”不起作用。
问题
我已经从图像 tensorflow/tensorflow:1.15.2-py3 创建了一个 docker 容器,然后使用 VS Code 的“远程容器”扩展附加到它。然后我在容器中创建了以下文件。
主要.py:

import tensorflow.compat.v1 as tf
print(tf.__version__)
这在 VS Code 终端中运行良好,但编辑器和问题 Pane 都给我一个 unresolved import 'tensorflow.compat'警告。 “转到定义”也不适用于 tf.__version__ .
我正在使用多个扩展,但我相信相关的是 Microsoft Python 扩展(安装在容器中),以及 Remote - Containers 扩展,现在是 Pylance 扩展(安装在容器中)。
我尝试过的事情
我已经用默认的 pylint 试过了,然后也是在安装 pylance 之后结果相似。我也看到了一些 docs关于类似的问题,但它们与为项目中的模块设置正确的源文件夹位置有关。相比之下,我的项目中的代码似乎与导入/转到定义一起工作正常。外部库似乎不起作用。
另外,为了这个最小的例子,我以 root 身份附加到容器,所以我猜这不是提升权限的问题。
我也尝试禁用除以下扩展之外的所有扩展,但得到了相同的结果:
  • 远程 - 容器(本地)
  • 远程 - WSL(本地)
  • Python(在容器上)
  • Jupyter(在容器上,Python 出于某种原因需要)

  • 以上所有扩展都是最新版本。
    我也摆弄过设置 python.autocomplete.extraPaths ,但我不确定正确的道路是什么。必须将库添加到安装在全局 python 安装中的路径似乎也是错误的,特别是因为我没有使用虚拟环境(它在 docker 容器中)。
    问题
    如何修复 VS Code 以使其识别此导入,并且我可以使用“转到定义”来探索这些 tensorflow 函数/类/等?

    最佳答案

    tldr;
    TensorFlow 以一种 pylint 和 pylance 无法识别的方式定义了它的一些模块。这些错误不一定表示设置不正确。
    修理:

  • pylint:可以安全地忽略 pylint 警告。
  • 智能感知:我目前知道的修复 Intellisense 的最佳方法是用它们别名的模块替换导入(通过在 repl 中导入别名为 x 然后运行 ​​help(x) 找到)。因为在我的例子中别名的目标是一个内部名称,所以您可能不想将这些更改 checkin 源代码管理。不理想。

  • 细节
    关于 linting:似乎 tensorflow 以工具无法理解的方式定义其模块。此外,该包似乎是另一个包的某种别名。例如:
    import tensorflow.compat.v1 as tf
    tf.estimator.RunConfig()
    上面的代码给出了 pylint 警告并破坏了智能感知。但是,如果您在 REPL 中手动导入上述内容并运行 help(tf) ,它会向您显示以下包,您可以使用它:
    import tensorflow_core._api.v1.compat.v1 as tf
    tf.estimator.RunConfig()
    第二个示例不会导致 pylint 警告。此外,智能感知功能(转到定义、Ctrl+单击等)也适用于第二个示例。
    但是,基于 _api ,看起来第二个包名称是内部命名空间,所以我猜最好只使用这个内部名称进行本地调试。
    确认/门票
  • pylint:我找到了一张关于 pylint 的票,其中包含 issues with a couple tensorflow imports看起来相关。
  • 智能感知:我已经 opened a ticket与 pylance。
  • 关于python - VS Code/Pylance/Pylint 无法解析导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65271399/

    60 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com