python - 来自父兄弟的 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
必须位于 repo 根目录,而不是项目根目录。
刚刚解决了我的问题。似乎 coc 扩展将您的 git repo 的根目录识别为根目录,而不是您打开的目录。我使用 monorepo 的子目录作为我的根目录,并用 neovim 自己打开它。我只是将 pyrightconfig.json 移动到正确的根目录,并将我的子目录的前缀添加到执行环境中的根路径,它就可以工作了。
https://github.com/fannheyward/coc-pyright/issues/235#issuecomment-756288634
我的回购在技术上是
repo/
namespace/
namespace/
django root/
business/
...
我不认为这很重要。我的错。
推荐阅读
- xcode - Xcode 永远不会完成构建并耗尽计算机上的内存
- php - php 使用指定以外的其他类
- angular2-routing - Angular5 - 使用routerlinkactive指令在页面重新加载时未添加活动类
- javascript - 检查项目是否有下划线,然后使用 javascript 创建一个子菜单
- ruby-on-rails - 从 Faraday 使用端口 3000 调用 localhost
- sap - 在拥有 15 亿多条记录的大表上进行保留的最佳方法是什么?(SAP HANA SP12)
- ruby-on-rails - rspec .to receive(:method_name) 正确用法
- google-bigquery - 如何从大查询表中删除分区列?
- ruby-on-rails - 迁移生态系统的最佳解决方案
- python - DRF - 嵌套路由器 - 在 POST/PUT/PATCH 上创建/更新嵌套对象