Python 3.x相对路径导入类报错:如何在指定项目结构导入Foo类?
解决example1.py中导入Foo类的问题
方法一:将examples转为包并以模块方式运行
- 在
src/examples目录下创建空的__init__.py文件,让examples成为Python包。 - 保持example1.py中的导入语句不变:
from ..models.Foo import Foo。 - 从项目根目录(
question-project)执行命令运行脚本:
这种方式会让Python识别整个src的包层级,相对导入就能正常生效。python -m src.examples.example1
方法二:修改模块搜索路径实现绝对导入
直接在example1.py开头添加代码,把src目录加入Python的模块搜索路径,之后用绝对导入:
import sys from pathlib import Path # 获取src目录的绝对路径 src_dir = Path(__file__).parent.parent sys.path.append(str(src_dir)) # 现在可以直接绝对导入 from models.Foo import Foo
这种方法不需要修改目录结构,适合快速调试脚本。
方法三:将项目安装为可编辑包(推荐开发场景)
- 在项目根目录(
question-project)创建setup.py文件,内容如下:
from setuptools import setup, find_packages setup( name="question-project", version="0.1.0", packages=find_packages(where="src"), package_dir={"": "src"}, )
- 在根目录执行命令安装可编辑包:
pip install -e .
- 之后在example1.py中直接使用绝对导入即可:
from models.Foo import Foo
这种方式适合长期开发,后续任何位置都能正常导入项目内的模块。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

