我有一个具有以下结构的包
projectX
├── data
├── results
└── projectX
├── stats
│ ├── __init__.py
│ ├── stats_worker.py
│ └── stats_wroker2.py
├── __init__.py
├── main_worker.py
└── interface.py
请注意,项目文件夹和源文件夹共享相同的名称 (projectX)。
问题有点复杂,需要做一些前提
前提:
我总是启动界面并且总是启动界面。没有调用其他脚本
我的问题首先出现在尝试从 stats_worker2 导入 main_worker 时。
我无法让它作为相对进口。因此,我尝试从 stats_worker2 和接口(分别)将父目录附加到 sys.path。我尝试了各种我不记得的方法。
它最终通过将以下行添加到 stats_worker2 来工作
sys.path.append('../projectX')
from projectX import main_worker
现在怪事开始了
在调用脚本几次之后(我不记得具体有多少次),上面的 sintax 不再起作用了。因为有一个:ImportError: No module named projectX
编辑:上面的斜体部分是由于我__init__.py
在 projectX 源文件夹中缺少一个。所有其他症状仍然存在。
但是,很奇怪,我现在可以从 stats_worker2 成功导入主要工作人员:
import main_worker
没有任何目录被附加到 sys.path!
但是,Sphinx 不再起作用了!具体来说,它无法导入 projectX 包的所有模块。
额外的怪异我曾经从界面成功导入stats_worker,现在我仍然可以导入它,但是我的IDE(Pycharm)将导入标记为未使用。它实际上已被使用,如果我评论导入,界面会按预期崩溃(我已经使 Pycharm 缓存无效)