【问题标题】:Pyright import from parent sibling results in missing import从父同级导入 Pyright 导致缺少导入
【发布时间】:2021-06-09 00:31:59
【问题描述】:

我正在尝试运行一个 django 应用程序,这是以下结构(最小复制):

root/
  business/
    __init__.py
    urls.py
  monitoring/
    __init__.py
    api.py
  manage.py

urls.py 我有以下导入:from monitoring.api import MonitoringConfigurationAPIView。但是,这会导致 Pyright 错误 [Pyright reportMissingImports] [E] Import "monitoring.api" could not be resolved

添加说明符以查看父目录 (from ..monitoring.api ...) 会使 Pyright 静音,但会导致 Python 本身出错:

File "/home/user/Projects/root/business/urls.py", line 20, in <module>
    from ..monitoring.api import MonitoringConfigurationAPIView
ImportError: attempted relative import beyond top-level package

我尝试在根目录中添加一个空白__init__.py,但这没有帮助。我尝试在根目录 (root/pyrightconfig.json) 中创建一个pyrightconfig.json 文件并设置根目录,但这也不起作用。

{
    "executionEnvironments": [
        {
          "root": "."
        }
    ]
}

它可以处理的所有外部包都很好,没有问题。只有本地是一个问题。我错过了什么吗?

【问题讨论】:

    标签: python pyright


    【解决方案1】:

    找到指出我的问题的链接。 pyrightconfig.json 必须位于 repo 根目录,而不是项目根目录。

    刚刚解决了我的问题。似乎 coc 扩展将您的 git repo 的根目录识别为根目录,而不是您打开的目录。我使用 monorepo 的子目录作为我的根目录,并用 neovim 自己打开它。我只是将 pyrightconfig.json 移动到正确的根目录,并将我的子目录的前缀添加到执行环境中的根路径,它就可以工作了。

    https://github.com/fannheyward/coc-pyright/issues/235#issuecomment-756288634

    我的回购在技术上是

    repo/
      namespace/
        namespace/
          django root/
            business/
            ...
    

    我认为这并不重要。我的错。

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 2022-11-15
      • 2011-05-31
      相关资源
      最近更新 更多