Kim*_*cks 11 pylint virtualenv python-3.x python-venv visual-studio-code
我在我的mac os上使用python3.6在这个文件夹中创建了一个venv
/Users/kim/Documents/Apps/PythonApps/python36-miros-a3
我在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"
    }
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试为pylint设置自定义路径,也改变了venvpath.
pylint一直在抱怨导入声明说它不存在.
如您所见,它们位于同一个文件夹中,我绝对可以执行我的python文件.
我该怎么做才能避免这种误报导入错误?
我也尝试过以下方法:
code以按照此处的建议激活vscode https://code.visualstudio.com/docs/setup/macBra*_*aca 11
皮林特有些古怪。在这种情况下,它不知道在哪里找到模块,因为它位于venv路径的子目录中。要解决这个问题:
将此设置放在您的工作区或文件夹设置中:
"python.linting.pylintArgs": [
    "--init-hook",
    "import sys; sys.path.append('<path to folder your module is in>')"
]
Run Code Online (Sandbox Code Playgroud)
或者,也许更好
生成.pylintrc文件。从带有venv激活运行的集成终端:
pylint --generate-rcfile > .pylintrc 
Run Code Online (Sandbox Code Playgroud)
然后打开生成的文件,并取消注释init-hook =部分为:
init-hook='import sys; sys.path.append("<path to folder you module is in>")'
Run Code Online (Sandbox Code Playgroud)
如果需要,请阅读.pylintrc并进行调整设置。在这两种情况下,路径都应指向您的“数据库”文件夹。
了解有关pylint的设置后,请以正确的方式进行操作:
from database.database_dispatcher import ...
Run Code Online (Sandbox Code Playgroud)
请参阅Anthony Sottile的答案。
对我来说,pylint在此处标记此错误是正确的
顶层模块是database(它包含一个__init__.py文件)
您的导入应该看起来像(完全绝对)
from database.database_dispatcher import ...
Run Code Online (Sandbox Code Playgroud)
或(显式相对)(是的!.模块名称前的名称是有意的)
from .database_dispatcher import ...
Run Code Online (Sandbox Code Playgroud)
我的跟进猜测是,你目前正在调用脚本为python ./database/main.py ...它投入./database在年初sys.path所以会出现你的进口正常工作-这是方步进但是你的模块结构。您应该python -m database.main ...改为使用来调用脚本。
请注意,在python 3.x中删除了隐式相对导入-尽管仍然存在这种脚本sys.path插入的(imo)缺陷。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           6971 次  |  
        
|   最近记录:  |