小结
我有一个python导入,当从VS代码终端运行时可以工作,但是VS代码的编辑器给出了警告。而且,“进入定义”也不起作用。
问题
我已经从映像tensorflow/tensorflow:1.15.2-py3
创建了一个停靠容器,然后使用VS代码的“远程容器”扩展附加到它。然后,我在容器中创建了以下文件。
main.py:
import tensorflow.compat.v1 as tf
print(tf.__version__)
这在VS代码终端中运行很好,但是编辑器和问题窗格都给了我一个unresolved import 'tensorflow.compat'
警告。此外,“转到定义”在tf.__version__
上也不起作用。
我使用了几个扩展,但我相信相关的扩展是Microsoft Python扩展(安装在容器中),以及远程容器扩展,现在是Pylance扩展(安装在容器中)。
我试过的东西
我已经在默认的pylint
中尝试过这一点,然后在安装了具有类似结果的pylance
之后也进行了尝试。我也看到了一些关于类似问题的文档,但它们与为项目中的模块设置正确的源文件夹位置有关。相反,在我的项目中,我的代码似乎可以很好地用于导入/自定义。外部库似乎不起作用。
此外,为了这个最小的例子,我已经将容器作为根附加到容器上,所以我猜这不是一个提升权限的问题。
除以下之外,我还尝试禁用所有扩展,但得到了相同的结果:
以上所有扩展都在最新版本上。
我还摆弄过设置python.autocomplete.extraPaths
,但我不确定正确的路径是什么。向全局python安装中安装的路径添加库似乎也是错误的,特别是因为我没有使用虚拟环境(它位于码头容器中等等)。
问题
我如何修正VS代码,以便它能够识别这个导入,并且我可以使用“转到定义”来探索这些tensorflow函数/类/等等?
发布于 2020-12-15 19:29:29
tldr;
TensorFlow以一种无法识别的方式定义了它的一些模块。这些错误不一定表示不正确的设置。
致Fix:
x
,然后运行help(x)
)。因为在我的例子中别名的目标是内部名称,所以您可能不想签入对源代码管理的这些更改。不太理想。详细信息
关于衬里:似乎tensorflow以工具无法理解的方式定义了它的模块。此外,该包似乎是另一个包的别名。例如:
import tensorflow.compat.v1 as tf
tf.estimator.RunConfig()
上面的代码给出了pylint警告并破坏了intellisense。但是,如果您在REPL中手动导入上述内容并运行help(tf)
,它将显示下面的包,您可以使用该包:
import tensorflow_core._api.v1.compat.v1 as tf
tf.estimator.RunConfig()
第二个示例不会导致pylint警告。此外,Intellisense特性(转到definition、Ctrl+Click等)使用第二个示例。
但是,基于_api
,看起来第二个包名是一个内部命名空间,所以我猜最好只使用这个内部名称进行本地调试。
确认/票
发布于 2021-07-23 04:03:05
所以对我来说我试着
import pandas as pd
但我得到了错误
"pd" is not accessedPylance (module) pd
因此,我所做的就是重新加载扩展Pylance(Pylance),这解决了我的问题。
发布于 2021-12-17 22:14:18
我也有同样的问题,但是各种各样的包裹。我的解决方案是转到VSCode设置并搜索"python.analysis.extraPaths"
,并将路径添加到站点包中。
在我的例子中,我添加了C:\Code\Python39\Lib\site-packages
,现在它运行良好。
https://stackoverflow.com/questions/65271399
复制相似问题