Python导入报错:No module named CPU_Processes问题求助
Python模块导入问题解决(同包模块引用+运行路径冲突)
问题核心
你的矛盾本质是两种运行场景下Python的模块搜索路径不一致:
- 单独运行FCFS.py时,当前工作目录是
algorithms,所以from CPU_Processes import Process能直接找到同目录模块 - 运行views.py时,当前工作目录是
Calculator,FCFS.py里的绝对导入会在Calculator目录下查找CPU_Processes,自然找不到
解决方案
1. 将algorithms标记为Python包
在algorithms目录下创建空的__init__.py文件,让Python识别它为可导入的包结构。
2. 修改同包内导入为相对导入
修改FCFS.py(以及其他需要导入Process的算法文件)的导入语句为:
from .CPU_Processes import Process
这里的.代表当前包(algorithms),无论从哪个入口运行,Python都会在同包内定位模块。
3. 正确运行views.py
从**项目根目录(CPU-Scheduling)**执行views.py,命令如下:
# Windows命令行 python Calculator\views.py # Linux/macOS终端 python Calculator/views.py
这种方式会让Python自动将项目根目录加入模块搜索路径,views.py里的from algorithms.xxx import xxx语句就能正常生效。
4. 单独测试算法文件的正确方式
如果需要单独运行FCFS.py测试,同样从项目根目录以模块方式启动:
python -m algorithms.FCFS
-m参数会让Python以包模块的逻辑加载文件,自动处理包结构的导入依赖。
备选方案:手动指定模块搜索路径
如果不想每次都从根目录运行,可以在views.py开头添加以下代码,强制将项目根目录加入Python的模块搜索路径:
import sys import os # 获取views.py所在的Calculator目录路径 current_dir = os.path.dirname(os.path.abspath(__file__)) # 向上一级获取项目根目录(CPU-Scheduling) root_dir = os.path.dirname(current_dir) # 将根目录加入搜索路径 if root_dir not in sys.path: sys.path.append(root_dir)
添加后,即使在Calculator目录下直接运行python views.py也能正常工作。
内容的提问来源于stack exchange,提问作者user19116203
相关产品推荐
相关产品推荐

