我在我的Mac OS上使用python3.6在这个文件夹/Users/kim/Documents/Apps/PythonApps/python36-miros-a3
中创建了一个venv
我在激活虚拟环境后运行了pip install pylint
我的工作区位于/Users/kim/Documents/Apps/WebApps/miros-a3
在我的vscode工作区中,我有以下工作区设置
{
"folders": [
{
"path": "."
}
],
"settings": {
"python.pythonPath": "/Users/kim/Documents/Apps/PythonApps/python36-miros-a3/bin/python3.6",
"python.venvPath": "/Users/kim/Documents/Apps/PythonApps"
}
}
我尝试过为pylint设置一个自定义路径,也尝试过更改venvpath。
pylint一直抱怨进口声明说它不存在。
正如您所看到的,它们在同一个文件夹中,我绝对可以执行我的python文件。
我可以做些什么来避免这些类型的误报导入错误?
我还尝试了以下方法:
1.转到命令行打开虚拟环境然后键入code
以激活vscode如这里推荐的https://code.visualstudio.com/docs/setup/mac
1.我也试过这个https://donjayamanne.github.io/pythonVSCodeDocs/docs/troubleshooting_linting/
6条答案
按热度按时间vqlkdk9b1#
Pylint有一些怪癖。在这种情况下,它不知道在哪里找到你的模块,因为它在你的venv路径的子目录中。要解决这个问题:
1.将此设置放入工作区或文件夹设置中:
或者也许更好
1.生成.pylintrc文件,在集成终端激活venv运行:
然后打开生成的文件,并取消注解**init-hook=**部分,使其成为:
阅读 .pylintrc 并根据需要调整设置。在这两种情况下,路径都应该指向“数据库”文件夹。
1.了解了pylint设置后,请按照正确的方式操作:
请看安东尼·索蒂尔的回答。
0sgqnhkj2#
对我来说,
pylint
在这里标记此错误是正确的顶层模块是
database
(它包含一个__init__.py
文件)您的导入应如下所示(完全绝对)
或(显式相对)(是!模块名前面的
.
是有意的)我的猜测是,您当前调用的脚本是
python ./database/main.py ...
,它将./database
放在sys.path
的开头,因此看起来您的导入工作正常--然而,这是在绕过您的模块结构,您应该使用python -m database.main ...
来调用脚本。注意,python3.x中删除了 implicit relative 导入--尽管脚本
sys.path
插入的这个(imo)缺陷仍然存在。byqmnocz3#
只是我的0.02美元,我如何修复它在我的情况。
我的问题完全与全球安装Pylint有关,vscode试图使用全局安装的pylint,它根本不知道我在Python venv中安装的依赖关系。这个answer解决了我的问题。它指向here,解释了如何配置vscode以在我的项目中使用venv运行。一旦我这样做了,vscode立即抛出一个警告,说我没有安装掉毛工具,并提示我安装一个,一旦完成,我的掉毛假阳性消失。
6qqygrtg4#
扩展Gatmando的答案,您需要告诉vscode使用
.env
中的pylint,而不是全局pylint:在工作区设置文件中:
.vscode/settings.json
,添加python.linting.pylintPath
并将其指向virtualenv
中的pylint
包:ukdjmx9f5#
另一个选项是在vscode项目根目录中创建
.env
文件:.env
文件:使用
.env
文件的一些注意事项:PYTHONPATH
可能会在不同的工具之间发生冲突。PYTHONPATH
指定多个目录以容纳多个工具。(例如:PYTHONPATH=src:.
)但是,这不是跨操作系统的,因为Windows分隔符是;
,而Linux/Mac是:
如果
.env
PYTHONPATH
解决了您的问题,那就太好了。但由于警告,我最终使用了pylint --init-hook
方法,因为它只影响pylint
,而且可以跨操作系统:.vscode/settings.json
sh7euo9m6#
将库添加到PYTHONPATH
当从
bash
执行pylint时,可以执行以下操作: