繁体   English   中英

如何在子模块中正确处理重要的父模块,同时仍然能够通过 main.py 自行运行它们?

[英]How to correctly important parent modules in submodules, while still being able to run them on their own and via main.py?

我的项目有这个文件结构:

src
├── API
│   ├── API.py
│   └── __init__.py
├── DataBase
│   ├── CreateDB.py
│   ├── DB.py
│   ├── SpacyTags.py
│   ├── __init__.py
├── ML
│   ├── FeaturePipe.py
│   ├── Labeler.py
│   ├── Predictor.py
│   ├── Transformer.py
│   ├── ModelCreator.py
│   ├── ModelOptimizer.py
│   └── __init__.py
├── News
│   ├── CNBCSpider.py
│   ├── CNBC_parse_article.py
│   ├── HistNewsAPI.py
│   ├── NewsListener.py
│   ├── __init__.py
│   └── new_article_funcs.py
├── Stock
│   ├── HistStockAPI.py
│   ├── ISIN.py
│   ├── PortfolioListener.py
│   ├── UpdateEntries.py
│   ├── __init__.py
├── Testing
│   └── ArticleFeatureTesting.ipynb
├── Exceptions.py
├── __init__.py
├── config.py
└── main.py

在我通过 Pycharm 运行我的程序并使用这样的导入之前(来自 ModelCreator.py 的示例):

from src.ML.Labeler import Labeler
from src.ML.ModelOptimizer import optimize_model
from src.Stock.ISIN import ISIN_LIST

现在,我正在迁移到我的 Raspberry Pi,我不确定如何导入 src/DataBase/DB.py 中的 src/config.py。 我仍然希望能够运行 main.py,它基本上导入了大部分模块和子模块,同时还能够自己运行子模块进行测试。 我也不喜欢添加一个

import sys
sys.path.append(xyz)

到每个文件。 所以我想知道是否有一个更清洁的选项,它允许所有这些。

我尝试使用相对路径进行导入,但这导致了类似的错误

ImportError: attempted relative import beyond top-level package

我发现的大多数解决方案对我都不起作用,因为我希望能够在 main.py 中导入我的模块,但仍想自行运行它们。 提前致谢。

不幸的是,我不相信有更优雅的解决方案。 也许这是 python 的限制,因为一些教程和其他 SO 线程说的类似:

在这种情况下,我会选择最适合您需求的解决方案。 也许PYTHONPATH (或其他env变量)?

正如我在行业中发现的那样,有时没有更好的方法,而“丑陋”的方法是唯一的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM