Python中已加__init__.py和sys.path.append仍遇ModuleNotFoundError
解决Python包导入失败的问题
先排查核心前提
- 确保
ultralight文件夹下存在__init__.py文件(可以是空文件,但必须有,Python才会将其识别为合法包)。如果缺失,直接在ultralight根目录创建空的__init__.py即可。
修正sys.path的写法
你当前的路径拼接逻辑存在问题,试试调整为以下绝对路径写法:
import os import sys # 获取当前示例文件所在的绝对目录 current_file_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接项目根目录(即ultralight包所在的上级目录) project_root = os.path.join(current_file_dir, '..') # 将项目根目录加入Python的搜索路径 sys.path.append(project_root) # 再次尝试导入 import ultralight as ul
之前你直接拼接至ultralight文件夹,会导致Python只能识别该文件夹内的模块,无法识别ultralight这个包本身——正确的做法是把项目根目录加入路径,让Python能找到根目录下的ultralight包。
更规范的开发方式(推荐)
既然目标是创建可分发的包,建议用开发模式安装包,彻底解决路径问题:
- 在项目根目录(包含
ultralight、examples的文件夹)下创建pyproject.toml文件,内容参考:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "ultralight" version = "0.1.0"
- 打开终端进入项目根目录,执行命令:
pip install -e .
该命令会将你的包以可编辑模式安装到当前Python环境,之后无论在哪个路径运行示例文件,都能直接import ultralight as ul,无需手动修改sys.path。
额外排查点
- 检查Python环境一致性:确保运行示例文件的Python解释器,和你安装包/调整路径的环境是同一个(避免虚拟环境切换导致的问题)。可以在示例文件开头添加
print(sys.executable),查看当前解释器路径是否符合预期。
内容的提问来源于stack exchange,提问作者Richard Tran
相关产品推荐
相关产品推荐

