如何解决从父同级导入 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 举报,一经查实,本站将立刻删除。