Python dataplatform项目模块导入失败及执行目录咨询
Python项目模块导入问题解决方案
项目目录结构
── dataplatform ├── __init__.py ├── commons │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ ├── get_partitions.cpython-38.pyc │ │ └── packages.cpython-38.pyc │ ├── get_partitions.py │ ├── packages.py │ ├── pipeline │ │ ├── __init__.py │ │ └── pipeline.py │ └── spark_logging.py ├── pipelines │ ├── __init__.py │ └── batch │ ├── ETL.py │ ├── ReadMe.rst │ └── main.py └── requirement.txt
问题解答
问题1:PyCharm中from dataplatform.commons import *报错的原因
核心是PyCharm的项目根目录识别错误:
- 当
from commons import *能正常导入时,说明PyCharm把dataplatform目录设成了Sources Root,此时解释器直接在该目录下查找commons模块。 - 而
from dataplatform.commons import *需要解释器从dataplatform的父目录开始查找包——因为dataplatform本身是顶层包,只有父目录被设为Sources Root时,解释器才能识别到这个顶层包。
解决方法:
右键点击dataplatform的父目录,选择Mark Directory as -> Sources Root,之后PyCharm就能正确识别dataplatform作为顶层包,带前缀的导入语句就不会报错了。
问题2:本地执行main.py的正确根目录
正确的执行根目录是dataplatform的父目录,而非dataplatform目录本身。
假设dataplatform的路径是/your-path/dataplatform,则切换到/your-path/目录下,执行以下命令:
python -m dataplatform.pipelines.batch.main
这种方式会让Python以父目录为根,按照包结构定位到main.py,同时保留dataplatform前缀的导入逻辑,满足HDP 3.1环境的要求。
内容的提问来源于stack exchange,提问作者halfwind22
相关产品推荐
相关产品推荐

