![](/img/trans.png)
[英]VS Code import resolution error with Pylance (ModuleNotFoundError)
[英]VS Code / Pylance / Pylint Cannot resolve import
我有一個 python 導入,從 VS Code 終端運行時有效,但是 VS Code 的編輯器發出警告。 此外,“轉到定義”不起作用。
我從圖像tensorflow/tensorflow:1.15.2-py3
創建了一個 docker 容器,然后使用 VS Code 的“Remote-Containers”擴展名附加到它。 然后我在容器中創建了以下文件。
主要.py:
import tensorflow.compat.v1 as tf
print(tf.__version__)
這在 VS Code 終端中運行良好,但編輯器和問題窗格都給我一個unresolved import 'tensorflow.compat'
警告。 “轉到定義”也不適用於tf.__version__
。
我正在使用幾個擴展,但我相信相關的是 Microsoft Python 擴展(安裝在容器中),以及 Remote - Containers 擴展,現在是 Pylance 擴展(安裝在容器中)。
我已經用默認的pylint
嘗試過這個,然后在安裝pylance
后也得到了類似的結果。 我也看過一些關於類似問題的文檔,但它們與為作為項目一部分的模塊設置正確的源文件夾位置有關。 相比之下,我項目中的代碼似乎可以很好地處理導入/轉到定義。 外部庫似乎不起作用。
另外,為了這個最小的例子,我以 root 身份附加到容器,所以我猜這不是權限提升的問題。
我還嘗試禁用除以下之外的所有擴展,但得到了相同的結果:
上面的所有擴展都是最新版本。
我還擺弄了設置python.autocomplete.extraPaths
,但我不確定正確的路徑是什么。 必須將庫添加到全局 python 安裝中安裝的路徑似乎也是錯誤的事情,特別是因為我沒有使用虛擬環境(它位於 docker 容器中)。
如何修復 VS Code 以使其識別此導入並且我可以使用“轉到定義”來探索這些 tensorflow 函數/類/等?
TensorFlow 以 pylint & pylance 無法識別的方式定義了它的一些模塊。 這些錯誤不一定表示設置不正確。
x
然后運行help(x)
來找到)。 因為在我的例子中別名的目標是一個內部名稱,所以您可能不想將這些更改簽入源代碼管理。 不理想。關於 linting:似乎 tensorflow 以工具無法理解的方式定義其模塊。 此外,package 似乎是另一個 package 的某種別名。 例如:
import tensorflow.compat.v1 as tf
tf.estimator.RunConfig()
上面的代碼給出了 pylint 警告並破壞了智能感知。 但是,如果您在 REPL 中手動導入上述內容並運行help(tf)
,它會顯示以下 package,您可以使用它來代替:
import tensorflow_core._api.v1.compat.v1 as tf
tf.estimator.RunConfig()
第二個示例不會導致 pylint 警告。 Intellisense 功能(Go to definition、Ctrl+Click 等)也適用於第二個示例。
但是,基於_api
,看起來第二個 package 名稱是一個內部命名空間,所以我猜最好只使用這個內部名稱進行本地調試。
所以對我來說,我試圖
import pandas as pd
但我得到了錯誤
"pd" is not accessedPylance (module) pd
所以我所做的是重新加載擴展 Python IntelliSense(Pylance) 並解決了我的問題。
我有同樣的問題,但有各種各樣的包裹。 我的解決方案是將 go 到 VSCode 設置並搜索"python.analysis.extraPaths"
,然后將路徑添加到您的站點包。
就我而言,我添加了C:\Code\Python39\Lib\site-packages
,現在它工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.