Python项目自定义模块导入失败(ModuleNotFoundError)求助
解决Python自定义模块导入问题
问题原因
你的导入报错是因为Python解释器找不到calcs模块的路径。虽然calcs目录有__init__.py,但运行test_calcs.py时,Python默认只会把当前脚本所在的myapp/tests/目录加入搜索路径,不会自动向上识别myapp/下的模块。
解决方法
这里提供几种实用的解决方式:
方法1:修改Python路径(临时生效)
在test_calcs.py开头添加代码,把myapp目录加入Python的搜索路径:
import sys from pathlib import Path # 获取myapp目录的绝对路径 sys.path.append(str(Path(__file__).parent.parent)) from calcs import calculations as clc
方法2:使用相对导入
在test_calcs.py里用相对导入语法,注意运行时要以myapp作为顶层包目录(不能直接运行test_calcs.py):
from ..calcs import calculations as clc
运行测试时需要在myapp的上级目录执行:
python -m myapp.tests.test_calcs
方法3:将项目安装为可编辑包(推荐)
在myapp目录下创建setup.py或pyproject.toml,把项目安装为可编辑模式,这样Python就能全局识别你的模块。
比如创建setup.py:
from setuptools import setup, find_packages setup( name="myapp", version="0.1", packages=find_packages(), )
然后在myapp目录下执行:
pip install -e .
之后就能直接在test_calcs.py里用原来的导入语句了。
内容的提问来源于stack exchange,提问作者user12835475
相关产品推荐
相关产品推荐

