导入“odoo.addons.base_rest.controllers”无法解决。皮兰斯(报告缺少进口)

问题描述 投票:0回答:3

当我为Addons odoo开发rest API时,设置导入并遇到问题

导入“odoo.addons.base_rest.controllers”无法解决。皮兰斯(报告缺少进口)

这是我的代码的一部分

from odoo.addons.base_rest.controllers import main 

class PrivateApiController(main.RestController):
   _root_path = '/api/private/helpdesk/'
   _collection_name = "private.helpdesk.service"

以及所有使用 from odoo.addons.[module_name] import main 的代码遇到问题Pylance(reportMissingImports)但是当它运行时,并不重要

我使用 .env,我的文件结构是:


├── my_addons
│   ├── api_ticket [my addons that i develop and get problem Pylance Missing Report ]
|   |   ├── controllers
|   |   │   ├── controllers.py
|   |   │   ├── __init__.py
|   |   │   ├── main.py
|   |   │   └── __pycache__
|   |   ├── datamodels
|   |   │   ├── __init__.py
|   |   │   ├── __pycache__
|   |   │   └── ticket_datamodel.py
|   |   ├── demo
|   |   │   └── demo.xml
|   |   ├── __init__.py
|   |   ├── __manifest__.py
|   |   ├── models
|   |   │   ├── __init__.py
|   |   │   ├── models.py
|   |   │   └── __pycache__
|   |   ├── __pycache__
|   |   │   └── __init__.cpython-38.pyc
|   |   ├── security
|   |   │   └── ir.model.access.csv
|   |   ├── services
|   |   │   ├── __init__.py
|   |   │   ├── __pycache__
|   |   │   └── ticket_service.py
|   |   └── views
|   |       ├── templates.xml
|   |       └── views.xml
│   ├── auth_api_key
|   ├── base_rest [one of the imported modules and has been installed into the main odoo]
...
│   ├── helpdesk_type
│   my_odoo.conf
├── odoo-14.0 -> ~/P/OdooProject/odoo_base/odoo-14.0 [main odoo]
|   ├── LICENSE
|   ├── MANIFEST.in
|   ├── odoo
|   │   ├── addons
|   │   ├── api.py
...
|   └── setup.py
├── requirements.txt
├── runserver.sh
└── venv14 -> ~/P/OdooProject/odoo_base/venv14

然后是我的setting.json

{
    "python.analysis.extraPaths": [
        "./odoo-14.0", // main odoo
        "./my_addons", // include develop addons and base_rest, etc from oca 
    ],
    "python.defaultInterpreterPath": "venv14/bin/python3"
    
}

我尝试用谷歌搜索我的问题,发现'导入“Path.to.own.script”无法在 Ubuntu 20.04 LTS 上使用 Python 3.x 在 VS Code 中解析 Pylance (reportMissingImports)'以及解决方案之一替代方案就是在导入代码末尾添加# type:ignore。作为临时解决方案

我的问题是:

  1. 有没有主要的解决办法?
  2. 如果主要方法之一是在 settings.json 部分中并添加 python.analysis.extraPaths。我写的对吗?
visual-studio-code python-import odoo-14 pylance
3个回答
2
投票

Odoo 将插件动态加载为命名空间包,并将它们组合到单个命名空间中。另一方面,Pylance 是静态分析器。它不执行任何 python 代码,因此技术上不可能解析这些名称。不幸的是,我认为没有解决方法。


1
投票

如何组织模块结构不会影响 odoo 的组织方式和使它们可访问的方式。

每个 odoo 模块始终在

odoo.addons
命名空间内可用。 你的语法对我来说看起来是正确的,我认为你的模块是在
base_rest
之前加载的,所以它还无法访问。您是否在
base_rest
文件中添加了
__manifest__.py
作为依赖项?


0
投票

根据您调用导入的项目深度,在您的设置项目中尝试以下操作: “设置”: { “python.autoComplete.extraPaths”:[ “/opt/odoo10/odoo”, “……”, “...”, “..”,

    ],
"python.analysis.extraPaths": [
        "/opt/odoo10/odoo",
        "....",
        "...",
        "..",
    ],

}

© www.soinside.com 2019 - 2024. All rights reserved.