我使用代码在Python中进行编码。在我的python文件中,我声明了以下导入:
import requests
from bs4 import BeautifulSoup我创建了一个虚拟环境,在虚拟环境中安装了所有必要的带有pip install的包,并且python脚本运行良好。
在Visual中,我修改了设置以使用安装在全局级别上的PyLint (意味着默认的python解释器),因此我不需要在虚拟环境中安装pylint以避免它出现在我的requirements.txt中。我的.vscode/settings.json看起来是这样的:
{
"python.pythonPath": "/Users/pazifik/.virtualenvs/fun-image-scraper/bin/python",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.linting.pylintPath": "/opt/homebrew/bin/pylint"
}Visual代码似乎正确地提取了Pylint,但是在"Problems“视图中它显示如下:
Unable to import 'requests' pylint(importError) [3, 1]
Unable to import 'bs4' pylint(importError) [4, 1]原因可能是全局安装的PyLint看不到虚拟环境中的包。Visual代码中选择的Python解释器是来自虚拟环境的Python解释器。
如何处理代码中的这些(假)导入错误?
编辑:为了更好地可视化我的问题和设置,这里有一些截图:
虚拟环境中已安装软件包的pip列表

虚拟环境下requests包的pip显示

“问题”视图(但是!正如前面提到的,脚本运行得很好,只是显示的错误让人困惑,因此我提出了一个问题)

PyLint安装在带有默认解释器的全局环境中

发布于 2021-12-28 06:27:44
很抱歉我以前的答案,我已经修改了pylintArgs,所以我还没有发现问题。
您可以在settings.json中添加以下内容:
"python.envFile": "${workspaceFolder}/.env",并在工作区文件夹下创建一个名为.env的文件,并将其添加到其中:
PYTHONPATH=/Users/pazifik/.virtualenvs/fun-image-scraper/lib/python3.9/site-packages解释:
虽然您已经在VSCode中选择了虚拟环境,并且可以在终端中发现PYTHONPATH已经被修改,但是pylint没有通过终端进行路由,所以不会得到修改的PYTHONPATH。
当使用终端设置时,PYTHONPATH会影响用户在终端内运行的任何工具,以及扩展对通过终端路由的用户执行的任何操作,如调试。但是,在这种情况下,当扩展执行未通过终端路由的操作时,例如使用linter或格式化程序时,此设置将不会对模块查找产生影响。 当使用.env文件设置PYTHONPATH时,它将影响扩展名代表您执行的任何操作和调试器执行的操作,但不会影响终端中运行的工具。
您可以参考官方文件。
发布于 2021-12-27 06:03:53
对不起,但它在我的电脑上很好用。您能否再次确认您选择了哪个python解释器,以及您在哪里安装了python包?
您可以从VSCode的左下角或终端中的环境名称中获得您使用过的python解释器:

python.pythonPath在settings.json中的设置不能确定您使用的是哪个python解释器。
也许您只是在不同的环境中安装了这些包,您是否可以使用pip show {packagename}命令来检查软件包的安装位置?
https://stackoverflow.com/questions/70488092
复制相似问题