Python跨包导入求助:如何在pkg2/file2.py导入pkg1/file1.py
解决跨包导入问题
首先假设你的目录结构如下(典型的同根多包结构):
project_root/ ├── pkg1/ │ ├── __init__.py │ └── file1.py └── pkg2/ ├── __init__.py └── file2.py
下面是几种可行的解决方法:
方法1:手动添加项目根目录到Python路径
在file2.py开头加入以下代码,将项目根目录加入Python的搜索路径,这样就能找到pkg1:
import sys from pathlib import Path # 获取项目根目录(当前脚本的父目录的父目录) root_path = Path(__file__).parent.parent sys.path.append(str(root_path)) from pkg1 import file1
方法2:使用相对导入(需以包的形式运行)
如果把整个项目当作一个包来管理,可在file2.py中用相对导入:
from ..pkg1 import file1
注意:这种方式不能直接运行file2.py,必须回到项目根目录,用模块方式启动:
python -m pkg2.file2
方法3:设置PYTHONPATH环境变量
通过环境变量告诉Python项目根目录的位置:
- Linux/macOS终端:
export PYTHONPATH="/path/to/your/project_root:$PYTHONPATH"
- Windows命令行:
set PYTHONPATH=C:\path\to\your\project_root;%PYTHONPATH%
设置后直接运行file2.py,from pkg1 import file1就能正常工作。
内容的提问来源于stack exchange,提问作者Suganth
相关产品推荐
相关产品推荐

