微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从父同级导入 Pyright 导致缺少导入

如何解决从父同级导入 Pyright 导致缺少导入

我正在尝试运行 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,但这没有帮助。我尝试在根目录 (pyrightconfig.json) 中创建一个 root/pyrightconfig.json 文件并设置根目录,但这也不起作用。

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

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

解决方法

找到了一个指出我的问题的链接。 pyrightconfig.json 必须位于存储库根目录,而不是项目根目录。

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

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

我的回购在技术上是

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。