对于一个大学项目,我有一堆python
文件,它们都有单独的用例,没有中心代码入口点。因为我将代码排序到有意义的子目录中,所以从这些子目录中导入的内容被破坏了。从其中一个子目录调用脚本时,结果是:
File "project/glm/predict_for_all.py", line 9, in <module>
from util.misc import load_data
ModuleNotFoundError: No module named 'util'
如果我将导入更改为from project.util.misc import load_data
,也会发生同样的情况:没有名为project
的模块
使用from util.misc ...
导入语句调用例如visualise_all.py
是有效的
作为参考,这里有一个(稍微简化的)目录树
project/
├── project
| ├── ann
| │ ├── __init__.py
| │ ├── predict_for_all.py
| | └── predict_for_one.py
| ├── glm
| │ ├── __init__.py
| │ ├── predict_for_all.py
| | └── predict_for_one.py
| ├── util
| │ ├── __init__.py
| │ ├── linear_modelling.py
| │ ├── misc.py
| │ └── plotting.py
| ├── __init__.py
| ├── visualise_one.py
| └── visualise_all.py
└── test
到目前为止我已经尝试过的事情:
__init__.py
个文件project
(之前:from util.misc import ..
,现在:from project.util.misc import ..
)from ..util.misc ...
):错误更改为ImportError: attempted relative import with no known parent package
SO chat提出了以下建议:
setup.py
并以editable
模式安装项目,以帮助解决导入冲突。诚然,我没有对此进行过很多研究,我主要是从一些搜索中假设我需要在代码中使用一个中心入口点来正确使用这种方法我没有尝试过的事情:
PATH
/PYTHONPATH
。从其他答案来看,这似乎是一个解决办法。但是,对于每个项目,必须手动执行此操作听起来似乎会导致环境变量的大量混乱,并且难以跟踪工作开销(如果这实际上是常见做法,请纠正我)我注意到的事情:
autoSearchPaths: True
和extraPaths: ['abs_path/to/project/project']
的pylance
,这表明我的python安装(在编辑器之外)无法查看项目的顶级文件夹之外的内容project/
终端中打开python
控制台并键入import project
和from project.util.misc import load_data
之类的导入时,它们传递时没有任何NotFoundError。这意味着什么,我不能说李>非常欢迎提出解决此问题或深入诊断此问题的建议!理想情况下,我也想知道如何在未来的工作中完全避免类似的问题
目前没有回答
相关问题 更多 >
编程相关推荐